Regrouper par force l'ensemble complet à être rempli avant que les enregistrements ne soient renvoyés (puisqu'il s'agit d'un tri implicite).
Pour cette raison (et bien d'autres), n'utilisez jamais Grouper par dans une sous-requête.
Je sais que j'ai besoin d'avoir (bien que je ne sache pas pourquoi) une clause GROUP BY
à la fin d'une requête SQL qui utilise des fonctions d'agrégation comme count
, sum
, avg
, etc :
SELECT count(userID), userName
FROM users
GROUP BY userName
Dans quels autres cas GROUP BY
serait-il utile, et quelles sont les ramifications en termes de performances ?
Regrouper par force l'ensemble complet à être rempli avant que les enregistrements ne soient renvoyés (puisqu'il s'agit d'un tri implicite).
Pour cette raison (et bien d'autres), n'utilisez jamais Grouper par dans une sous-requête.
GROUP BY est également utile lorsque vous souhaitez générer un rapport qui calcule la moyenne ou la somme d'un ensemble de données. Vous pouvez GROUPER par l'ID de service et la SOMME tous les revenus des ventes ou AVG le nombre de ventes pour chaque mois.
Compter le nombre d'utilisations des balises peut être un exemple Google :
SELECT TagName, Count(*)
AS TimesUsed
FROM Tags
GROUP BY TagName ORDER TimesUsed
Si vous voulez simplement une valeur distincte de balises, je préférerais utiliser l'instruction DISTINCT
.
SELECT DISTINCT TagName
FROM Tags
ORDER BY TagName ASC