SQL Server intermediar
Ginger Grant
Instructor
Capitolul 1: Sumarizarea datelor
Capitolul 2: Funcții pentru date și calcule matematice
Capitolul 3: Procesarea datelor cu T-SQL
Capitolul 4: Funcții fereastră
Revizuirea valorilor sumarizate pentru fiecare coloană este un prim pas comun în analiza datelor
Dacă datele se află într-o bază de date, cel mai rapid mod de agregare este utilizarea SQL
SELECT Country, Year, InternetUse, GDP,
ExportGoodsPercent, CellPhonesper100
FROM EconomicIndicators
+-----------+-----+------------+------------+------------------+-----------------+
|Country |Year |InternetUse | GDP |ExportGoodsPercent|CellPhonesper100 |
+-----------+-----+------------+------------+------------------+-----------------+
|Swaziland |2011 |20.43165813 |7335004354 |56.30476059 |63.7015615 |
|Sweden |2011 |90.88204559 |394271163688|49.93022195 |118.5711258 |
|Switzerland|2011 |82.98773087 |395111518596|51.20242546 |130.0623629 |
...
+-----------+-----+------------+------------+------------------+-----------------+
MIN() pentru valoarea minimă a unei coloaneMAX() pentru valoarea maximă a unei coloaneAVG() pentru media aritmetică a unei coloaneAceastă interogare T-SQL returnează valorile agregate ale coloanei InternetUse
SELECT AVG(InternetUse) AS MeanInternetUse,
MIN(InternetUse) AS MINInternet,
MAX(InternetUse) AS MAXInternet
FROM EconomicIndicators
+-------------------+------------+-------------+
|MeanInternetUse |MINInternet | MAXInternet|
|-------------------+------------+-------------|
| 18.9854496196171| 0 | 375.5970064|
+-------------------+------------+-------------+
Această interogare T-SQL filtrează valorile agregate folosind clauza WHERE
Observați că valoarea text este în
SELECT AVG(InternetUse) AS MeanInternetUse,
MIN(InternetUse) AS MINInternet,
MAX(InternetUse) AS MAXInternet
FROM EconomicIndicators
WHERE Country = 'Solomon Islands'
+-------------------+------------+-------------+
|MeanInternetUse |MINInternet | MAXInternet|
|-------------------+------------+-------------|
| 1.79621| 0 | 6.00|
+-------------------+------------+-------------+
SELECT Country, AVG(InternetUse) AS MeanInternetUse,
MIN(InternetUse) AS MINInternet,
MAX(InternetUse) AS MAXInternet
FROM EconomicIndicators
GROUP BY Country
+--------------------+------------------+------------+-------------+
| Country |MeanInternetUse |MINInternet | MAXInternet|
|--------------------+------------------+------------+-------------|
|Solomon Islands | 1.79621| 0| 6.00|
|Hong Kong | 245.1067| 0| 375.00|
|Liechtenstein | 63.8821| 36.5152| 85.00|
...
+--------------------+------------------+------------+-------------+
Nu se poate folosi WHERE cu GROUP BY — va genera o eroare
-- This throws an error
...
GROUP BY
WHERE Max(InternetUse) > 100
În schimb, folosiți HAVING
-- This is how you filter with a GROUP BY
...
GROUP BY
HAVING Max(InternetUse) > 100
SELECT Country, AVG(InternetUse) AS MeanInternetUse,
MIN(GDP) AS SmallestGDP,
MAX(InternetUse) AS MAXInternetUse
FROM EconomicIndicators
GROUP BY Country
HAVING MAX(InternetUse) > 100
+--------------+-------------------+-------------+---------------+
|Country |MeanInternetUse |SmallestGDP | MAXInternetUse|
|--------------+-------------------+-------------+---------------|
|Macedonia | 71.3060150792857| -0.465059948| 110.5679538|
|Hong Kong | 245.106718614286| 0| 375.5970064|
|Congo | 60.8972476010714| -9.492757847| 104.6455529|
...
+--------------+-------------------+-------------+---------------+
SQL Server intermediar