Différence entre GROUP BY et ORDER BY
Quelle est la différence entre GROUP BY et ORDER BY ? – Les clauses GROUP BY et ORDER BY les deux sont utilisées pour organiser les données. La différence clé entre la clause Group By et Order By est que la clause Group By est utilisée lorsque nous souhaitons appliquer la fonction d’agrégation sur plusieurs tuples et que la clause Order By est utilisée lorsque nous voulons trier les données obtenues par une requête.
Définition du ORDER BY
ORDER BY: triez les données par ordre croissant ou décroissant, considérons la table CLIENTS suivante:
+----+----------+-----+-----------+----------+ | ID | NOM | AGE | ADRESSE | SALAIRE | +----+----------+-----+-----------+----------+ | 1 | Alex | 21 | Paris | 9000.00 | | 2 | Bob | 15 | Rabat | 2500.00 | | 3 | Ali | 13 | Casablanca| 3000.00 | | 4 | Emily | 26 | Lyon | 4500.00 | | 5 | Thomas | 29 | Chingaho | 7500.00 | | 6 | Sora | 22 | Wigar | 1500.00 | +----+----------+-----+-----------+----------+
Voici un exemple qui trierait le résultat par ordre croissant selon le NOM du client:
SQL> SELECT * FROM CLIENTS ORDER BY NOM;
Cela produirait le résultat suivant:
+----+----------+-----+-----------+----------+ | ID | NOM | AGE | ADRESSE | SALAIRE | +----+----------+-----+-----------+----------+ | 1 | Alex | 21 | Paris | 9000.00 | | 3 | Ali | 13 | Casablanca| 3000.00 | | 2 | Bob | 15 | Rabat | 2500.00 | | 4 | Emily | 26 | Lyon | 4500.00 | | 6 | Sora | 22 | Wigar | 1500.00 | | 5 | Thomas | 29 | Chingaho | 7500.00 | +----+----------+-----+-----------+----------+
Définition du GROUP BY
GROUP BY: organisez des données identiques en groupes. Maintenant, la table CLIENTS a les enregistrements suivants avec des noms en double:
+----+----------+-----+-----------+----------+ | ID | NOM | AGE | ADRESSE | SALAIRE | +----+----------+-----+-----------+----------+ | 1 | Alex | 21 | Paris | 9000.00 | | 2 | Alex | 24 | Lyon | 9000.00 | | 3 | Alex | 31 | Niort | 9000.00 | | 4 | Bob | 15 | Rabat | 2500.00 | | 5 | Bob | 25 | Lile | 2500.00 | | 6 | Ali | 13 | Casablanca| 3000.00 | | 7 | Emily | 26 | Lyon | 4500.00 | | 8 | Thomas | 29 | Chingaho | 7500.00 | +----+----------+-----+-----------+----------+
Si on veut souhaiter regrouper les noms identiques en un seul nom, la requête GROUP BY sera la suivante:
SQL> SELECT * FROM CLIENTS GROUP BY NOM;
Cela produirait le résultat suivant: (pour les noms identiques, il choisirait le dernier et trierait enfin la colonne par ordre croissant)
+----+----------+-----+-----------+----------+ | ID | NOM | AGE | ADRESSE | SALAIRE | +----+----------+-----+-----------+----------+ | 3 | Alex | 31 | Niort | 9000.00 | | 6 | Ali | 13 | Casablanca| 3000.00 | | 5 | Bob | 25 | Lile | 2500.00 | | 7 | Emily | 26 | Lyon | 4500.00 | | 8 | Thomas | 29 | Chingaho | 7500.00 | +----+----------+-----+-----------+----------+
Une clause GROUP BY fonctionne sur les lignes renvoyées par une requête en récapitulant des lignes identiques dans un groupe unique/distinct et renvoie une seule ligne avec le résumé pour chaque groupe, en utilisant la fonction d’agrégation appropriée dans SELECT, comme COUNT (), SUM. (), MIN (), MAX (), AVG (), etc.
Maintenant, si on veut connaître le montant total du salaire de chaque client, la requête GROUP BY sera la suivante:
SQL> SELECT NOM, SUM(SALAIRE) FROM CLIENTS GROUP BY NOM;
Cela produirait le résultat suivant: (somme des salaires qui ont des noms identiques et trie la colonne NOM après avoir supprimé les noms identiques)
+---------+-------------+ | NOM | SUM(SALAIRE)| +---------+-------------+ | Alex | 270000.00 | | Ali | 3000.00 | | Bob | 5000.00 | | Emily | 4500.00 | | Thomas | 7500.00 | +---------+-------------+
Conclusion:
Si vous souhaitez former un groupe de tuples, vous devez utiliser la clause Group By. Si vous souhaitez organiser les données d’une seule colonne ou de plusieurs colonnes dans l’ensemble des tuples dans l’ordre croissant ou décroissant, vous devez utiliser la clause Order By.