Instruction GROUP BY MySQL
L'instruction MySQL GROUP BY
L' GROUP BY
instruction regroupe les lignes qui ont les mêmes valeurs dans des lignes récapitulatives, comme "trouver le nombre de clients dans chaque pays".
L' GROUP BY
instruction est souvent utilisée avec des fonctions d'agrégation ( COUNT()
,
MAX()
,
MIN()
, SUM()
,
AVG()
) pour regrouper le jeu de résultats par une ou plusieurs colonnes.
Syntaxe GROUP BY
SELECT column_name(s)
FROM table_name
WHERE condition
GROUP BY column_name(s)
ORDER BY column_name(s);
Base de données de démonstration
Vous trouverez ci-dessous une sélection de la table "Clients" dans l'exemple de base de données Northwind :
CustomerID | CustomerName | ContactName | Address | City | PostalCode | Country |
---|---|---|---|---|---|---|
1 |
Alfreds Futterkiste | Maria Anders | Obere Str. 57 | Berlin | 12209 | Germany |
2 | Ana Trujillo Emparedados y helados | Ana Trujillo | Avda. de la Constitución 2222 | México D.F. | 05021 | Mexico |
3 | Antonio Moreno Taquería | Antonio Moreno | Mataderos 2312 | México D.F. | 05023 | Mexico |
4 |
Around the Horn | Thomas Hardy | 120 Hanover Sq. | London | WA1 1DP | UK |
5 | Berglunds snabbköp | Christina Berglund | Berguvsvägen 8 | Luleå | S-958 22 | Sweden |
MySQL GROUP BY Exemples
L'instruction SQL suivante répertorie le nombre de clients dans chaque pays :
Exemple
SELECT COUNT(CustomerID), Country
FROM Customers
GROUP BY Country;
L'instruction SQL suivante répertorie le nombre de clients dans chaque pays, triés de haut en bas :
Exemple
SELECT COUNT(CustomerID), Country
FROM Customers
GROUP BY Country
ORDER BY COUNT(CustomerID) DESC;
Base de données de démonstration
Vous trouverez ci-dessous une sélection du tableau "Orders" dans l'exemple de base de données Northwind :
OrderID | CustomerID | EmployeeID | OrderDate | ShipperID |
---|---|---|---|---|
10248 | 90 | 5 | 1996-07-04 | 3 |
10249 | 81 | 6 | 1996-07-05 | 1 |
10250 | 34 | 4 | 1996-07-08 | 2 |
Et une sélection du tableau "Expéditeurs" :
ShipperID | ShipperName |
---|---|
1 | Speedy Express |
2 | United Package |
3 | Federal Shipping |
GROUP BY avec JOIN Exemple
L'instruction SQL suivante répertorie le nombre de commandes envoyées par chaque expéditeur :
Exemple
SELECT Shippers.ShipperName, COUNT(Orders.OrderID) AS NumberOfOrders FROM
Orders
LEFT JOIN Shippers ON Orders.ShipperID = Shippers.ShipperID
GROUP BY ShipperName;