Réponses:
ORDER BY modifie l'ordre dans lequel les articles sont retournés.
GROUP BY agrégera les enregistrements par les 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.).
ORDER BY modifie l'ordre dans lequel les articles sont retournés.
GROUP BY agrégera les enregistrements par les 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
age
colonne, avec Peters ayant des âges différents et la requête est SELECT NAME, AGE FROM TABLE GROUP BY NAME?
ORDER BY: triez les données par ordre croissant ou décroissant.
Considérez le tableau CLIENTS :
+----+----------+-----+-----------+----------+
| ID | NAME | AGE | ADDRESS | SALARY |
+----+----------+-----+-----------+----------+
| 1 | Ramesh | 32 | Ahmedabad | 2000.00 |
| 2 | Khilan | 25 | Delhi | 1500.00 |
| 3 | kaushik | 23 | Kota | 2000.00 |
| 4 | Chaitali | 25 | Mumbai | 6500.00 |
| 5 | Hardik | 27 | Bhopal | 8500.00 |
| 6 | Komal | 22 | MP | 4500.00 |
| 7 | Muffy | 24 | Indore | 10000.00 |
+----+----------+-----+-----------+----------+
Voici un exemple, qui trierait le résultat par ordre croissant par NOM:
SQL> SELECT * FROM CUSTOMERS
ORDER BY NAME;
Cela produirait le résultat suivant:
+----+----------+-----+-----------+----------+
| ID | NAME | AGE | ADDRESS | SALARY |
+----+----------+-----+-----------+----------+
| 4 | Chaitali | 25 | Mumbai | 6500.00 |
| 5 | Hardik | 27 | Bhopal | 8500.00 |
| 3 | kaushik | 23 | Kota | 2000.00 |
| 2 | Khilan | 25 | Delhi | 1500.00 |
| 6 | Komal | 22 | MP | 4500.00 |
| 7 | Muffy | 24 | Indore | 10000.00 |
| 1 | Ramesh | 32 | Ahmedabad | 2000.00 |
+----+----------+-----+-----------+----------+
GROUP BY: organiser les données identiques en groupes.
Désormais, la table CUSTOMERS contient les enregistrements suivants avec des noms en double:
+----+----------+-----+-----------+----------+
| ID | NAME | AGE | ADDRESS | SALARY |
+----+----------+-----+-----------+----------+
| 1 | Ramesh | 32 | Ahmedabad | 2000.00 |
| 2 | Ramesh | 25 | Delhi | 1500.00 |
| 3 | kaushik | 23 | Kota | 2000.00 |
| 4 | kaushik | 25 | Mumbai | 6500.00 |
| 5 | Hardik | 27 | Bhopal | 8500.00 |
| 6 | Komal | 22 | MP | 4500.00 |
| 7 | Muffy | 24 | Indore | 10000.00 |
+----+----------+-----+-----------+----------+
si vous souhaitez regrouper des noms identiques en un seul nom, la requête GROUP BY serait la suivante:
SQL> SELECT * FROM CUSTOMERS
GROUP BY NAME;
Cela produirait le résultat suivant: (pour des noms identiques, il choisirait le dernier et trierait finalement la colonne dans l'ordre croissant)
+----+----------+-----+-----------+----------+
| ID | NAME | AGE | ADDRESS | SALARY |
+----+----------+-----+-----------+----------+
| 5 | Hardik | 27 | Bhopal | 8500.00 |
| 4 | kaushik | 25 | Mumbai | 6500.00 |
| 6 | Komal | 22 | MP | 4500.00 |
| 7 | Muffy | 24 | Indore | 10000.00 |
| 2 | Ramesh | 25 | Delhi | 1500.00 |
+----+----------+-----+-----------+----------+
comme vous l'avez déduit qu'il ne sert à rien sans les fonctions SQL comme sum, avg etc.
alors parcourez cette définition pour comprendre la bonne utilisation de GROUP BY:
Une clause GROUP BY fonctionne sur les lignes renvoyées par une requête en résumant les lignes identiques dans un groupe unique / distinct et renvoie une seule ligne avec le résumé de chaque groupe, en utilisant la fonction Aggregate appropriée dans la liste SELECT, comme COUNT (), SUM (), MIN (), MAX (), AVG (), etc.
Maintenant, si vous voulez connaître le montant total du salaire de chaque client (nom), la requête GROUP BY serait la suivante:
SQL> SELECT NAME, SUM(SALARY) FROM CUSTOMERS
GROUP BY NAME;
Cela produirait le résultat suivant: (somme des salaires de noms identiques et trier la colonne NOM après avoir supprimé les noms identiques)
+---------+-------------+
| NAME | SUM(SALARY) |
+---------+-------------+
| Hardik | 8500.00 |
| kaushik | 8500.00 |
| Komal | 4500.00 |
| Muffy | 10000.00 |
| Ramesh | 3500.00 |
+---------+-------------+
La différence est exactement ce que le nom implique: un groupe par effectue une opération de regroupement et un ordre par tris.
Si vous le faites, SELECT * FROM Customers ORDER BY Name
vous obtenez la liste des résultats triée par nom du client.
Si vous le faites, SELECT IsActive, COUNT(*) FROM Customers GROUP BY IsActive
vous obtenez un nombre de clients actifs et inactifs. Le groupe a agrégé les résultats en fonction du champ que vous avez spécifié.
Ils ont une signification totalement différente et ne sont pas vraiment liés du tout.
ORDER BY vous permet de trier le jeu de résultats en fonction de différents critères, comme d'abord trier par nom à partir de az, puis trier par prix du plus élevé au plus bas.
(COMMANDEZ PAR nom, prix DESC)
GROUP BY vous permet de prendre votre jeu 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 de tous les employés de chaque lieu de travail.
Simple, ORDER BY
classe les données et les GROUP BY
groupes, ou combine les données.
ORDER BY
classe l'ensemble de résultats selon le champ mentionné, par défaut dans l'ordre croissant.
Supposons que vous lanciez une requête comme ORDER BY (student_roll_number)
, elle affichera le résultat dans l'ordre croissant des numéros de rôle des élèves. Ici,student_roll_number
entrée peut se produire plus d'une fois.
Au GROUP BY
cas où, nous l'utilisons avec des fonctions d'agrégation, et cela 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 (student_first_name)
elle affichera la somme des notes des étudiants appartenant à chaque groupe (où tous les membres d'un groupe auront le même prénom).
GROUP BY est utilisé pour regrouper des lignes dans une sélection, généralement lors de l'agrégation de lignes (par exemple, calculer des totaux, des moyennes, etc. pour un ensemble de lignes avec les mêmes valeurs pour certains champs).
ORDER BY est utilisé pour classer les lignes résultant d'une instruction select.
Quelques bons exemples là-bas. Je voudrais juste ajouter le mien à partir d'une feuille de travail Web qui donne de bons exemples clairs, ainsi que vous permettant d'exécuter votre propre SQL.
ORDER BY
affiche un champ par ordre croissant ou décroissant. While GROUP BY
affiche les mêmes noms de champ, id, etc. dans une seule sortie.
Il convient de noter que ce GROUP BY
n'est pas toujours nécessaire car (au moins dans PostgreSQL, et probablement dans d'autres variantes SQL), vous pouvez utiliser ORDER BY
avec une liste et vous pouvez toujours utiliser ASC
ou DESC
par colonne ...
SELECT name_first, name_last, dob
FROM those_guys
ORDER BY name_last ASC, name_first ASC, dob DESC;