Temps de lecture approximative : 8 minutes

Fonctions d’agrégation

En SQL, les fonctions d’agrégation permettent de réaliser des opérations arithmétiques et statistiques au sein d'une requête. Les principales fonctions sont les suivantes :

  • COUNT() pour compter le nombre d’enregistrements d'une table ou d'une colonne distincte ;
  • AVG() pour calculer la moyenne sur un ensemble d’enregistrements ;
  • SUM() pour calculer la somme sur un ensemble d’enregistrements ;
  • MAX() pour récupérer la valeur maximum d’une colonne sur un ensemble d’enregistrements ;
  • MIN() pour récupérer la valeur minimum de la même manière que la fonction MAX().

Utiliser une fonction

Pour utiliser une fonction, la syntaxe est toujours équivalente à celle décrite ci-dessous. Il faut préciser la colonne de son choix entre les parenthèses de la fonction.

SQL
SELECT fonctionXYZ(colonne) FROM une_table;

COUNT()

En SQL, la fonction d’agrégation COUNT() permet de compter le nombre d’enregistrements dans une table, ce qui s'avère très pratique dans de nombreux cas. On peut notamment citer le nombre de commandes d'un site e-commerce, le nombre d'articles d'un blog, ou encore le nombre de produits d'un catalogue.

Pour compter le nombre d'enregistrements sur une colonne en particulier, il suffit de reprendre la syntaxe précédente. Les enregistrements qui possèdent la valeur NULL ne seront pas comptabilisés. Tout de suite un exemple avec la table clients.

Table : clients
id prenom nom email ville commandes
1 Marine Leroy mleroy@example.com Paris 3
2 Jean René jrene@example.com Lyon 1
3 Ted Bundy tbundy@example.com Miami 2
4 Paul Bismuth pbismuth@example.com Londres NULL
5 Caroline Rodriguez crodriguez@example.com Berlin 2

Compter le nombre de colonne email dans la table clients.

SQL
SELECT COUNT(email) FROM clients;
Résultat
COUNT(email)
5

Compter le nombre de colonne commandes dans la table clients.

SQL
SELECT COUNT(commandes) FROM clients;
Résultat
COUNT(commandes)
4

Pour compter le nombre total de clients dans la table, il suffit d’utiliser le joker dans la fonction COUNT() sur toute la table. La syntaxe est donc la suivante : COUNT(*)

SQL
SELECT COUNT(*) FROM clients;
Résultat
COUNT(*)
5

AVG()

En SQL, la fonction d’agrégation AVG() permet de calculer une valeur moyenne sur un ensemble d’enregistrements de type numérique et qui ne possèdent pas la valeur NULL. Les cas d'utilisation ne manquent pas. En utilisant la table clients décrite précédemment, on peut envisager de calculer le nombre moyen de commandes par clients, si celui-ci a commandé au moins une fois.

SQL
SELECT AVG(commandes) FROM clients;
Résultat
AVG(commandes)
2

La requête sélectionne uniquement les 4 lignes dont la valeur de la colonne commandes n'est pas NULL. Au final, obtient le calcul suivant : (3 + 1 + 2 + 2) / 4 = 2.

Dans la table clients, si le client Paul Bismuth (#4) n'avait pas la valeur NULL pour sa colonne commandes, mais 0, alors le calcul aurait été le suivant : (3 + 1 + 2 + 0 + 2) / 5 = 1.6000

SUM()

En SQL, la fonction d’agrégation SUM() permet de calculer la somme sur un ensemble d’enregistrements de type numérique et qui ne possèdent pas la valeur NULL. En utilisant la table clients décrite précédemment, on peut envisager compter le nombre de commandes dans la table clients.

SQL
SELECT SUM(commandes) AS somme FROM clients;
Résultat
somme
8

MAX() et MIN()

En SQL, les fonctions d’agrégation MAX() et MIN() permettent de sélectionner la valeur respectivement maximale et minimale dans un ensemble d’enregistrements. Les valeurs NULL sont écartées. En utilisant la table clients décrite précédemment, on peut envisager rechercher le nombre de commandes maximal et minimal pour un client.

SQL
SELECT MAX(commandes) as max_cmd FROM clients;
Résultat
max_cmd
3
SQL
SELECT MIN(commandes) as min_cmd FROM clients;
Résultat
min_cmd
1