SQL Server intermédiaire
Ginger Grant
Instructor
Chapitre 1 : Résumer les données
Chapitre 2 : Fonctions de date et mathématiques
Chapitre 3 : Traitement des données avec T-SQL
Chapitre 4 : Fonctions de fenêtrage
Examiner les valeurs récapitulatives par colonne est souvent la première étape d'une analyse
Si les données sont dans une base, le plus rapide pour agréger est d'utiliser 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() pour la valeur minimale d'une colonneMAX() pour la valeur maximale d'une colonneAVG() pour la moyenne d'une colonneCette requête T-SQL retourne les valeurs agrégées de la colonne InternetUse
SELECT AVG(InternetUse) AS MeanInternetUse, MIN(InternetUse) AS MINInternet, MAX(InternetUse) AS MAXInternet FROM EconomicIndicators+-------------------+------------+-------------+ |MeanInternetUse |MINInternet | MAXInternet| |-------------------+------------+-------------| | 18.9854496196171| 0 | 375.5970064| +-------------------+------------+-------------+
Cette requête T-SQL filtre les valeurs agrégées avec une clause WHERE
Remarquez que la valeur texte est entre
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|
...
+--------------------+------------------+------------+-------------+
On ne peut pas utiliser WHERE avec GROUP BY : cela produit une erreur
-- Ceci génère une erreur
...
GROUP BY
WHERE Max(InternetUse) > 100
Utilisez plutôt HAVING
-- Voici comment filtrer avec un 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 intermédiaire