Aller au contenu principal
ShadowAcademy

Les langages SQL Compter et regrouper

GROUP BY et HAVING

GROUP BY découpe la table en paquets et calcule dans chacun :

SELECT secteur, count(*)
FROM clients
GROUP BY secteur;

Une ligne par secteur. Les clients sans secteur forment leur propre groupe, celui de NULL.

La règle à retenir

Toute colonne affichée à côté d'un calcul doit figurer dans le GROUP BY : il y a un secteur par groupe, mais plusieurs prénoms.

Filtrer les groupes : HAVING

WHERE filtre les lignes, avant le regroupement. HAVING filtre les groupes, après le calcul :

SELECT secteur, count(*) AS effectif
FROM clients
GROUP BY secteur
HAVING count(*) >= 2;

L'ordre complet d'une requête

SELECT      les colonnes et les calculs
FROM        la table
WHERE       filtre les lignes
GROUP BY    forme les groupes
HAVING      filtre les groupes
ORDER BY    trie le résultat
LIMIT       coupe la liste

2 exercices pour cette lecon

Les exercices demandent un compte : il faut bien enregistrer votre progression quelque part. La lecture, elle, reste libre. Creer un compte

  • Clients par secteur moyen lecon a valider
  • Les secteurs bien représentés moyen lecon a valider