6.1 Liste des fonctions d'agrégation
Lorsque vous utilisez le regroupement de lignes dans SQL avec l'opérateur GROUP BY
, vous pouvez utiliser SELECT
des fonctions dans l'instruction qui agissent sur les données groupées. Ces fonctions sont également appelées fonctions d'agrégation.
Voici une liste des plus populaires :
# | Fonction | Description |
---|---|---|
1 | COMPTER() | Renvoie le nombre de valeurs dans un groupe |
2 | SOMME() | Renvoie la somme des valeurs d'un groupe |
3 | MAX() | Renvoie la valeur maximale d'un groupe |
4 | MIN() | Renvoie la valeur minimale d'un groupe |
5 | MOY() | Renvoie la moyenne d'un groupe |
6 | BIT_AND() | Effectue un ET au niveau du bit sur toutes les valeurs de groupe |
7 | BIT_OR() | Effectue un OU au niveau du bit sur toutes les valeurs de groupe |
8 | BIT_XOR() | Effectue un XOR au niveau du bit sur toutes les valeurs de groupe |
9 | GROUP_CONCAT() | Concatène toutes les valeurs de groupe en une seule chaîne |
Voyons maintenant quelques exemples avec nos fonctions d'agrégation.
6.2 Analyse des salaires des employés
Calculons quelques statistiques sur nos employés à partir de la table employee .
Première question : combien d'employés avons-nous ?
Si nous voulons connaître le nombre de tous les enregistrements de la table, nous pouvons utiliser la fonction d'agrégation pour cela COUNT
. La requête ressemblera à ceci :
SELECT COUNT(*) FROM employee
Et MySQL renverra comme réponse le chiffre 6. Nous avons 6 employés dans le département, dont un chat. D'accord.
Deuxième question : combien payons-nous par mois à tous les employés ?
Pour répondre à cette question, nous devons additionner les salaires de tous les employés. Pour ce faire, nous utilisons la fonction d'agrégationSUM()
La requête ressemblera à ceci :
SELECT SUM(salary) FROM employee
Notez que cette fois, nous devons spécifier les valeurs de quelle colonne nous résumons. Nous avons spécifié une colonne de salaire . Nous ne pouvons pas simplement additionner tous les champs d'une table.
Et MySQL renverra comme réponse le nombre 461000. Nous avons 6 employés dans le département et le salaire est de 461 000. Trop.
Et enfin, la troisième question : quels sont nos salaires maximum et minimum dans le département ? Eh bien, calculons le salaire moyen. Pour ce faire, nous avons besoin des fonctions MIN
, MAX
et AVG
.
La requête sera un peu plus complexe cette fois et ressemblera à ceci :
SELECT MIN(salary), AVG(salary), MAX(salary)
FROM employee
Le résultat de cette requête sera :
MIN(salaire) | MOY (salaire) | MAX(salaire) |
---|---|---|
1000 | 76833.3333 | 200000 |
Le salaire minimum dans notre département est de 1 000 $, ce qui est très bien. Le salaire maximum est de 200 000, mais c'est le directeur.
Mais le salaire moyen est trop élevé, vous devez en quelque sorte optimiser les coûts. Embauchons un autre chat et c'est tout :)