SQL - Group By vs Order By
Bonjour, les passionnés de SQL en herbe ! Aujourd'hui, nous allons plonger dans deux clauses essentielles du SQL : Group By et Order By. En tant que votre enseignant bienveillant en informatique, je suis excité de vous guider à travers ces concepts. Ne vous inquiétez pas si vous êtes nouveau dans la programmation - nous allons commencer par les bases et progresser pas à pas. Alors, prenez une tasse de café (ou de thé, si c'est votre truc), et mettons-nous en route pour notre aventure SQL !
La clause SQL Group By
Qu'est-ce que Group By ?
La clause Group By est comme un organisateur utile pour vos données. Imaginez que vous avez un placard en désordre plein de vêtements. Group By vous aide à trier ces vêtements en piles nettes basées sur certaines caractéristiques - comme la couleur ou le type de vêtement.
En termes de SQL, Group By vous permet d'organiser vos données en groupes basés sur une ou plusieurs colonnes. Cela est particulièrement utile lorsque vous souhaitez effectuer des calculs ou des résumés sur ces groupes.
Syntaxe de base
Voici la structure de base d'une clause Group By :
SELECT column1, column2, aggregate_function(column3)
FROM table_name
GROUP BY column1, column2;
Décomposons cela :
- Nous SELECT les colonnes que nous voulons voir dans notre résultat.
- Nous spécifions哪个表 nous obtenons les données.
- La partie GROUP BY indique à SQL quelles colonnes utiliser pour le regroupement.
Exemple 1 : Regrouper les ventes par produit
Imaginez que nous avons une table appelée sales
avec les colonnes : product_name
, quantity_sold
, et sale_date
. Regroupons nos ventes par produit :
SELECT product_name, SUM(quantity_sold) as total_sold
FROM sales
GROUP BY product_name;
Cette requête nous montrera la quantité totale vendue pour chaque produit. Voici ce qui se passe :
- Nous SELECT
product_name
et la SUM dequantity_sold
. - Nous obtenons ces données FROM notre table
sales
. - Nous GROUP BY
product_name
, donc SQL créera un groupe pour chaque produit unique.
Le résultat pourrait ressembler à ceci :
product_name | total_sold |
---|---|
Apple | 150 |
Banana | 200 |
Orange | 175 |
Exemple 2 : Regroupement multiple
Nous pouvons également regrouper par plusieurs colonnes. Supposons que nous voulons regrouper nos ventes par produit et date :
SELECT product_name, sale_date, SUM(quantity_sold) as daily_total
FROM sales
GROUP BY product_name, sale_date;
Cette requête regroupe nos ventes par produit et date, nous montrant les totaux quotidiens pour chaque produit.
La clause SQL Order By
Qu'est-ce que Order By ?
Si Group By est notre organisateur de placard, Order By est comme arrangez nos vêtements du plus léger au plus sombre ou du plus court au plus long. Il s'agit tous de trier nos données dans un ordre spécifique.
Syntaxe de base
La structure de base d'une clause Order By est :
SELECT column1, column2
FROM table_name
ORDER BY column1 [ASC|DESC], column2 [ASC|DESC];
- ASC signifie ordre croissant (du plus petit au plus grand, ou de A à Z).
- DESC signifie ordre décroissant (du plus grand au plus petit, ou de Z à A).
- Si vous ne spécifiez pas, SQL suppose ASC par défaut.
Exemple 3 : Trier les produits par ventes
Tribuons nos produits par leurs ventes totales :
SELECT product_name, SUM(quantity_sold) as total_sold
FROM sales
GROUP BY product_name
ORDER BY total_sold DESC;
Cette requête fait ce qui suit :
- Regroupe les ventes par produit.
- Calcule la quantité totale vendue pour chaque produit.
- Trie les résultats du plus grand au plus petit.
Le résultat pourrait ressembler à ceci :
product_name | total_sold |
---|---|
Banana | 200 |
Orange | 175 |
Apple | 150 |
Exemple 4 : Triage multiple
Nous pouvons également trier par plusieurs colonnes :
SELECT product_name, sale_date, SUM(quantity_sold) as daily_total
FROM sales
GROUP BY product_name, sale_date
ORDER BY product_name ASC, daily_total DESC;
Cette requête :
- Regroupe les ventes par produit et date.
- Trie d'abord par nom de produit (par ordre alphabétique).
- Ensuite, trie par total quotidien (du plus grand au plus petit) dans chaque groupe de produit.
Group By vs Order By
Maintenant que nous avons vu Group By et Order By en action, comparons-les :
Fonctionnalité | Group By | Order By |
---|---|---|
But | Organise les données en groupes | Trie les données dans un ordre spécifique |
Utilisation | Utilisé avec des fonctions d'agrégation | Peut être utilisé avec ou sans agrégats |
Résultat | Réduit le nombre de lignes (résume) | Ne change pas le nombre de lignes |
Position | Comes avant ORDER BY dans la requête | Comes après GROUP BY (si présent) |
Fonctionnalité | Crée des groupes pour les calculs d'agrégation | Détermine la séquence des lignes de sortie |
Quand utiliser Group By
Utilisez Group By lorsque vous souhaitez :
- Résumer les données (comme obtenir des totaux ou des moyennes pour chaque groupe).
- Effectuer des calculs sur des groupes de données.
- Réduire le nombre de lignes dans votre ensemble de résultats.
Quand utiliser Order By
Utilisez Order By lorsque vous souhaitez :
- Trier vos résultats dans un ordre spécifique (ascendant ou descendant).
- Présenter les données dans une séquence plus lisible ou logique.
- Trouver les valeurs les plus élevées ou les plus basses dans votre ensemble de données.
Exemple 5 : Combiner Group By et Order By
Mettons tout ensemble avec un dernier exemple. Supposons que nous voulons trouver les 3 produits les plus vendus pour chaque mois :
SELECT
EXTRACT(MONTH FROM sale_date) as month,
product_name,
SUM(quantity_sold) as total_sold
FROM
sales
GROUP BY
EXTRACT(MONTH FROM sale_date), product_name
ORDER BY
month ASC, total_sold DESC
LIMIT 3;
Cette requête :
- Regroupe les ventes par mois et produit.
- Calcule les ventes totales pour chaque produit chaque mois.
- Trie les résultats par mois (ascendant) puis par ventes totales (descendant).
- Limite les résultats aux 3 produits les plus vendus pour chaque mois.
Et voilà ! Nous avons traversé les terres de Group By et Order By. Souvenez-vous, la pratique rend parfait, donc n'ayez pas peur d'expérimenter avec ces clauses dans vos propres requêtes. Bon codage SQL, et puissent vos données être toujours bien organisées et parfaitement triées !
Credits: Image by storyset