SQL - Tri
Tri des résultats
Il est possible en SQL d'organiser les résultats grâce à la clause ORDER BY. La clause ORDER BY est suivie des mots clés ASC ou DESC, qui précisent respectivement si le tri se fait de manière croissante (par défaut) ou décroissante. Le classement se fait sur des nombres ou des chaines de caractères.
Prenons l'exemple de la table voiture :
Marque | Modele | Serie | Numero | Compteur |
---|---|---|---|---|
Renault | 18 | RL | 4698 SJ 45 | 123450 |
Renault | Kangoo | RL | 4568 HD 16 | 56000 |
Renault | Kangoo | RL | 6576 VE 38 | 12000 |
Peugeot | 106 | KID | 7845 ZS 83 | 75600 |
Peugeot | 309 | chorus | 7647 ABY 82 | 189500 |
Ford | Escort | Match | 8562 EV 23 |
- La sélection de toutes les colonnes de la table trièes par ordre croissant de l'attribut Marque se fait par l'instruction :
SELECT * FROM VOITURE
ORDER BY Marque ASC
Marque | Modele | Serie | Numero | Compteur |
---|---|---|---|---|
Ford | Escort | Match | 8562 EV 23 | |
Peugeot | 106 | KID | 7845 ZS 83 | 75600 |
Peugeot | 309 | chorus | 7647 ABY 82 | 189500 |
Renault | 18 | RL | 4698 SJ 45 | 123450 |
Renault | Kangoo | RL | 4568 HD 16 | 56000 |
Renault | Kangoo | RL | 6576 VE 38 | 12000 |
- La sélection de toutes les colonnes de la table trièes par ordre croissant de l'attribut Marque, puis par ordre décroissant du compteur, se fait par l'instruction :
SELECT * FROM VOITURE
ORDER BY Marque ASC, Compteur DESC
Marque | Modele | Serie | Numero | Compteur |
---|---|---|---|---|
Ford | Escort | Match | 8562 EV 23 | |
Peugeot | 309 | chorus | 7647 ABY 82 | 189500 |
Peugeot | 106 | KID | 7845 ZS 83 | 75600 |
Renault | 18 | RL | 4698 SJ 45 | 123450 |
Renault | Kangoo | RL | 4568 HD 16 | 56000 |
Renault | Kangoo | RL | 6576 VE 38 | 12000 |
Regroupement de résultats
Il peut être intéressant de regrouper des résultats afin de faire des opérations par groupe (opérations statistiques par exemple). Cette
opération se réalise à l'aide de la clause GROUP BY, suivie du nom de chaque colonne sur laquelle on veut effectuer des regroupements.
Les principales fonctions pouvant être effectuées par groupe sont :
- AVG: Calcule la moyenne d'une colonne (ou de chaque regroupement si elle est couplée à la clause GROUP BY)
- COUNT: Calcule le nombre de lignes d'une table (ou de chaque regroupement ...)
- MAX: Calcule la valeur maximale d'une colonne (ou de chaque regroupement ...)
- MIN: Calcule la valeur minimale colonne (ou de chaque regroupement ...)
- SUM: Effectue la somme des valeurs d'une colonne (ou de chaque regroupement ...)
Soit la table VOITURE ci-dessus :
- L'affichage des moyennes des compteurs par marque se fait par l'instruction :
SELECT Marque, AVG(Compteur) AS Moyenne FROM VOITURE
GROUP BY Marque
Marque | Moyenne |
---|---|
Renault | 63816.6 |
Peugeot | 132550 |
Ford |
La clause HAVING va de pair avec la clause GROUP BY, elle permet d'appliquer
une restriction sur les groupes créés grâce à la clause GROUP BY.
- L'affichage des moyennes des compteurs non nulles regroupées par marque se fait par l'instruction :
SELECT Marque, AVG(Compteur) AS Moyenne FROM VOITURE
GROUP BY Marque
HAVING Moyenne IS NOT NULL
Marque | Moyenne |
---|---|
Renault | 63816.6 |
Peugeot | 132550 |
![]() |
Remarquez l'utilisation de AS pour donner un nom à la colonne créée à l'aide de la fonction AVG. |