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 !

SQL - Group By vs Order By

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 :

  1. Nous SELECT product_name et la SUM de quantity_sold.
  2. Nous obtenons ces données FROM notre table sales.
  3. 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 :

  1. Regroupe les ventes par produit.
  2. Calcule la quantité totale vendue pour chaque produit.
  3. 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 :

  1. Regroupe les ventes par produit et date.
  2. Trie d'abord par nom de produit (par ordre alphabétique).
  3. 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 :

  1. Regroupe les ventes par mois et produit.
  2. Calcule les ventes totales pour chaque produit chaque mois.
  3. Trie les résultats par mois (ascendant) puis par ventes totales (descendant).
  4. 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