130 votes

Quelle est la différence entre GROUP BY et ORDER BY dans sql ?

Quand utilisez-vous "lequel" en général ? Les exemples sont vivement encouragés !

Je fais référence à MySql, mais je ne peux pas imaginer que le concept soit différent sur un autre SGBD.

262voto

RiddlerDev Points 1893

ORDER BY modifie l'ordre dans lequel les éléments sont retournés.

GROUP BY regroupe les enregistrements en fonction des colonnes spécifiées, ce qui vous permet d'exécuter des fonctions d'agrégation sur des colonnes non groupées (telles que SUM, COUNT, AVG, etc.).

TABLE:
ID NAME
1  Peter
2  John
3  Greg
4  Peter

SELECT *
FROM TABLE
ORDER BY NAME

= 
3 Greg
2 John
1 Peter
4 Peter

SELECT Count(ID), NAME
FROM TABLE
GROUP BY NAME

= 
1 Greg
1 John 
2 Peter

SELECT NAME
FROM TABLE
GROUP BY NAME
HAVING Count(ID) > 1

=
Peter

79voto

CMerat Points 2449

ORDER BY modifie l'ordre dans lequel les éléments sont retournés.

GROUP BY regroupe les enregistrements en fonction des colonnes spécifiées, ce qui vous permet d'exécuter des fonctions d'agrégation sur des colonnes non groupées (telles que SUM, COUNT, AVG, etc.).

25voto

Max Schmeling Points 6295

La différence est exactement ce que le nom indique : un groupe par effectue une opération de regroupement, et un ordre par trie.

Si vous faites "SELECT * FROM Customers ORDER BY Name", vous obtenez la liste des résultats triée par le nom des clients.

Si vous faites "SELECT IsActive, COUNT(*) FROM Customers GROUP BY IsActive", vous obtenez un compte des clients actifs et inactifs. Le groupe par regroupe les résultats en fonction du champ que vous avez spécifié.

16voto

PatrikAkerstrand Points 23968

Ils ont une signification totalement différente et ne sont pas du tout liés.

ORDER BY vous permet de trier l'ensemble des résultats en fonction de différents critères, comme le premier tri par nom de a-z, le tri par prix du plus élevé au plus bas.

(ORDER BY name, price DESC)

GROUPE PAR vous permet de prendre votre ensemble de résultats, de le regrouper en groupes logiques, puis d'exécuter des requêtes agrégées sur ces groupes. Vous pouvez par exemple sélectionner tous les employés, les regrouper en fonction de leur lieu de travail et calculer le salaire moyen. Vous obtiendrez ainsi le salaire moyen d'un employé à un endroit donné de votre base de données.

8voto

C'est simple, order_by ordonne les données et group_by regroupe/combine les données.

Order by ordonne l'ensemble des résultats en fonction du champ mentionné, par défaut en ordre croissant.

Supposons que vous exécutez une requête sous la forme order_by(student_roll_number), le résultat sera affiché dans l'ordre croissant des numéros d'inscription des étudiants. Ici, l'entrée numéro_rouleau peut apparaître plus d'une fois.

Dans le cas de group_by, nous l'utilisons avec des fonctions d'agrégation, et il regroupe les données selon la fonction d'agrégation et nous obtenons le résultat. Ici, si notre requête a sum(marks) avec group_by(roll_no), il montrera la somme des notes de chaque étudiant. C'est-à-dire que chaque étudiant n'aura qu'une seule entrée dans le jeu de résultats.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X