SQL Server'a Giriş
John MacKintosh
Instructor
SELECT
SUM(demand_loss_mw) AS lost_demand
FROM grid;
+-------------+
| lost_demand |
+-------------+
| 177888 |
+-------------+
Bunu ek bir sütun ekleyerek parçalayabilir miyiz?
SELECT
SUM(demand_loss_mw) AS lost_demand,
description
FROM grid;
Msg 8120, Level 16, State 1, Line 1
Column 'grid.description' is invalid in the select list because it is not contained in
either an aggregate function or the GROUP BY clause.
SELECT
SUM(demand_loss_mw) AS lost_demand,
description
FROM grid
GROUP BY description;
+----------- -+-------------------------------------------------------+
| lost_demand | description |
+-------------+-------------------------------------------------------+
| NULL | Gerçek Fiziksel Saldırı |
| NULL | Soğuk Hava Olayı |
| NULL | Etki Yaratma Potansiyeli Olan Siber Olay |
| 40 | Dağıtım Kesintisi |
| 2 | Dağıtım Sistemi Kesintisi |
| NULL | Deprem |
| NULL | Jeneratörde Elektrik Arızası |
| 338 | Elektrik Sistemi Ada Modu |
| 24514 | Elektrik Sistemi Ayrışması Ada Modu |
| 15 | Elektrik Sistemi Ayrışması Ada Modu Şiddetli Hava |
+-------------+-------------------------------------------------------+
SELECT
SUM(demand_loss_mw) AS lost_demand,
description
FROM grid
WHERE
description LIKE '%storm'
AND demand_loss_mw IS NOT NULL
GROUP BY description;
+----------- -+--------------------------------------------+
| lost_demand | description |
|-------------+--------------------------------------------|
| 996 | Buz Fırtınası |
| 420 | Yük Kesme Şiddetli Hava Yıldırım Fırtınası |
| 332 | Büyük Fırtına |
| 3 | Şiddetli Hava Gök Gürültülü Fırtına |
| 413 | Şiddetli Hava Rüzgâr Fırtınası |
| 4171 | Şiddetli Hava Kış Fırtınası |
| 1352 | Kış Fırtınası |
+-------------+--------------------------------------------+
SELECT içinde toplu (aggregate) fonksiyonlar kullanılabilirWHERE ile veriyi filtreleyinGROUP BY ile veriyi gruplara ayırınSELECT
SUM(demand_loss_mw) AS lost_demand,
description
FROM grid
WHERE
description LIKE '%storm'
AND demand_loss_mw IS NOT NULL
GROUP BY description;
+----------- -+--------------------------------------------+
| lost_demand | description |
+-------------+--------------------------------------------+
| 996 | Buz Fırtınası |
| 420 | Yük Kesme Şiddetli Hava Yıldırım Fırtınası |
| 332 | Büyük Fırtına |
| 3 | Şiddetli Hava Gök Gürültülü Fırtına |
| 413 | Şiddetli Hava Rüzgâr Fırtınası |
| 4171 | Şiddetli Hava Kış Fırtınası |
| 1352 | Kış Fırtınası |
+-------------+--------------------------------------------+
SELECT
SUM(demand_loss_mw) AS lost_demand,
description
FROM grid
WHERE
description LIKE '%storm'
AND demand_loss_mw IS NOT NULL
GROUP BY description
HAVING SUM(demand_loss_mw) > 1000;
+----------- -+--------------------------------------------+
| lost_demand | description |
|-------------+--------------------------------------------|
| 4171 | Şiddetli Hava Kış Fırtınası |
| 1352 | Kış Fırtınası |
+-------------+--------------------------------------------+
`
GROUP BY, veriyi bir veya daha çok değerin kombinasyonlarına böler
WHERE, satır değerlerine göre filtreler
HAVING, GROUP BY ifadesinden sonra gelir ve gruplar ya da toplamlar üzerinde filtreler
SQL Server'a Giriş