Ce cours sur le SQL a pour but de donner des bases pour quiconque voudrait avoir une vision globale sur ce sujet. Il permet d’avoir une vision globale sur comment lire une base de données et faire des requêtes. Cet article est le quatrième d’une série de 5 articles.
Ce cours est la suite de la partie 3, il va présenter les agrégations en SQL. Si vous débutez totalement en SQL, commencez par la partie 1.
GROUP BY
La fonction GROUP BY permet de grouper plusieurs résultats. Si on dispose par exemple d’une base de données de transactions. On va pouvoir calculer la somme des ventes par client, le client qui achète le plus, … La commande GROUP BY s’écrit après la commande WHERE mais avant la commande LIMIT. Voici un exemple de requête utilisant GROUP BY :
SELECT
colonneA, fonction(colonneB)
FROM
table
GROUP BY
colonneA
Liste des principales fonctions d’agrégation
- COUNT : Permet de compter le nombre de lignes
- SUM : Permet de sommer une liste de termes
- AVG : Permet de prendre la moyenne arithmétique d’une liste de termes.
- MAX : Permet de prendre le plus grand terme parmi une liste de termes
- MIN : Permet de prendre le plus petit terme parmi une liste de termes
L’opérateur COUNT
On veut compter le nombre de personnes pour chaque prénom de la table de la partie 1. Pour cela, on utilise la fonction COUNT, dont voici la requête :
SELECT
prenom,
count(prenom) AS nb_prenom
FROM
personne
GROUP BY
prenom
Voici le résultat de la requête SQL.
prenom | nb_prenom |
Pierre | 1 |
Paul | 1 |
Baptiste | 2 |
Jean | 1 |
Jacques | 1 |
L’opérateur SUM
On veut compter le salaire total des personnes de notre base. Pour cela, on utilise la fonction SUM
SELECT
sum(salaire) AS salaire_total
FROM
revenue
Et voici ce le résultat obtenu :
salaire_total |
257 000 |
L’opérateur MAX
On veut compter le salaire maximum des personnes de notre base. Pour cela, on utilise la fonction MAX
SELECT
max(salaire) AS salaire_max
FROM
revenue
On obtient alors :
salaire_max |
70 000 |
A noter : La fonction AS est très utile avec les fonctions d’agrégation
L’opérateur WITH ROLLUP
La fonction WITH ROLLUP permet de calculer avec des fonctions plusieurs résultats mais sans grouper les lignes. Voici un exemple de requête utilisant GROUP BY WITH ROLLUP :
SELECT
colonneA, fonction(colonneB)
FROM
table
GROUP BY
colonneA
WITH ROLLUP
Exemple
On veut compter le nombre de personnes pour chaque nom et prénom mais garder tous les noms prénoms. Pour cela, on utilise la fonction WITH ROLLUP avec cette requête :
SELECT
nom,
prenom,
count(prenom) AS nb_prenom
FROM
personne
GROUP BY
prenom
WITH ROLLUP
Ce qui nous donne le résultat suivant :
nom | prenom | nb_prenom |
Dupont | Baptiste | 2 |
Durand | Jean | 1 |
Duchene | Pierre | 1 |
Dupont | Paul | 1 |
Durand | Jacques | 1 |
Girard | Baptiste | 2 |
Pas d’entraînement pour cette partie, il reviendra dans la partie 5 !
Et voilà pour cette partie 4 sur les fonctions d’agrégation en SQL. Au prochain article : les fonction d’agrégation !