Clause GROUP BY
GROUP BY est utilisé (souvent avec des fonctions d’agrégation) pour grouper des lignes sélectionnées par les valeurs d'une ou plusieurs colonnes ou expressions.Une ligne est retournée pour chaque groupe.
Exemple1 : Nombre d’avions par marque
SELECT Marque, COUNT(av#)
FROM Avion
GROUP BY Marque
Remarque : Nous basons le comptage sur la clef primaire av# car elle ne peut être NULL. COUNT ne prend pas en compte les valeurs NULL.
SELECT Marque, COUNT(*)Renommer la nouvelle colonnes (alias)
FROM Avion
GROUP BY Marque
SELECT Marque, COUNT(*) [Nombre d'avions]Exemple2 : Nombre d’avions par marque en commençant par la marque ayant le plus grand nombre d’avions
FROM Avion
GROUP BY Marque
SELECT Marque, COUNT(*) [Nombre d'avions]Ou écrire:
FROM Avion
GROUP BY Marque
ORDER BY [Nombre d'avions] DESC
SELECT Marque, COUNT(*) [Nombre d'avions]Exemple3 : Nombre d’avions par marque et type d’avion
FROM Avion
GROUP BY Marque
ORDER BY COUNT(*) DESC
SELECT Marque, TypeAvion, COUNT(*) [Nombre d'avions]Exemple4 : Nombre, dans l’ordre décroissant, d’avions localisés à Paris par marque et type d’avion
FROM Avion
GROUP BY Marque, TypeAvion
SELECT Marque, TypeAvion, COUNT(*) [Nombre d'avions]
FROM Avion
WHERE localisation = 'Paris'
GROUP BY Marque, TypeAvion
ORDER BY [Nombre d'avions] DESC
Fonctions d’agrégation (fonctions récapitulatives)
Fonction | Rôle |
---|---|
SUM | Somme des valeurs de l’attribut |
MIN | Minimum des valeurs de l’attribut |
MAX | Maximum des valeurs de l’attribut |
AVG | Moyenne des valeurs de l’attribut |
COUNT | Nombre d’enregistrements du groupe |
SELECT Marque, MAX(capacite) [Capacité maximum]Exemple6 : Capacité minimum par marque d’avion
FROM avion
GROUP BY Marque
SELECT Marque, MIN(capacite) [Capacité minimum]Exemple7 : Capacité minimum et capacité maximum par marque d’avion
FROM avion
GROUP BY Marque
SELECT Marque, MIN(capacite) [Capacité minimum], MAX(capacite) [Capacité maximum],Exemple 8 : Moyenne des capacités par marque d’avion
FROM avion
GROUP BY Marque
SELECT Marque, AVG(capacite) [Moyenne des capacités]Exemple9 : Somme des capacités par marque d’avion
FROM avion
GROUP BY Marque
SELECT Marque, SUM(capacite) [Somme des capacités]
FROM avion
GROUP BY Marque
Fonctions d’agrégation sans GROUP BY
Sans la clause GROUP BY, les fonctions d’agrégation s’applique au seul groupe des toutes les lignes du résultat.Exemple10 : Nombre d’avions
SELECT COUNT(av#) [Nombre d'avions] FROM avionExemple11 : minimum de capacité des avion
SELECT MIN(capacite) [Min Capacité] FROM avion
Clause HAVING
La clause HAVING permet de créer un filtre appliqué sur les regroupements de lignesGénéralement utilisée avec GROUP BY
Remarque : Sans la clause GROUP BY, la clause HAVING se comporte comme un WHERE
Exemple1 : Nombre d’avions par marque pour les marques ayant plus qu’un seul avionSELECT Marque, COUNT(*) [Nombre d'avions]
FROM Avion
GROUP BY Marque
HAVING COUNT(*) > 1
Remarque : Les alias de colonnes ne sont pas reconnues dans les clauses WHERE, GROUP BY et HAVING
SELECT Marque [La marque], COUNT(*) [Nombre d'avions]
FROM Avion
GROUP BY[La marque]
HAVING[Nombre d'avions]
Remarque : Les fonctions d’agrégation ne sont pos acceptées dans l’expression de groupement
SELECT Marque, COUNT(*) [Nombre d'avions]Exemple2 : Nombre d’avions par marque pour les marques dont la capacité minimum des avions est supérieure à 250
FROM Avion
GROUP BYMIN(Capacite)
SELECT Marque, COUNT(*) [Nombre d'avions]
FROM Avion
GROUP BY Marque
HAVING MIN(capacite) > 250
Telechargement
La base de donnée VolAvionPour plus comprendre : TP + correction
Aucun commentaire :
Enregistrer un commentaire