Les fonctions d'agrégation ont souvent besoin d'un groupe ajouté BY.
GROUP BY Déclaration
Le instruction GROUP BY est utilisé en conjonction avec les fonctions d'agrégation pour regrouper les résultat réglé par une ou plusieurs colonnes.
SQL GROUP BY Syntaxe
SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name;
Base de données Demo
Dans ce tutoriel, nous allons utiliser la base de données Northwind bien connu.
Voici une sélection de la "Orders" tableau:
Numéro de commande | N ° de client | EmployeeID | Date de commande | 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 de la "Shippers" tableau:
ShipperID | ShipperName | Téléphone |
---|---|---|
1 | Speedy Express | (503) 555-9831 |
2 | United Package | (503) 555-3199 |
3 | Federal Shipping | (503) 555-9931 |
Et une sélection de la "Employees" tableau:
EmployeeID | Nom de famille | Prénom | Date de naissance | photo | Remarques |
---|---|---|---|---|---|
1 | Davolio | Nancy | 1968-12-08 | EmpID1.pic | Education includes a BA.... |
2 | Fuller | Andrew | 1952-02-19 | EmpID2.pic | Andrew received his BTS.... |
3 | Leverling | Janet | 1963-08-30 | EmpID3.pic | Janet has a BS degree.... |
SQL GROUP BY Exemple
Maintenant, nous voulons trouver le nombre de commandes envoyées par chaque expéditeur.
L'instruction SQL suivante compte que les commandes groupées par les expéditeurs:
Exemple
SELECT Shippers.ShipperName,COUNT(Orders.OrderID) AS NumberOfOrders FROM
Orders
LEFT JOIN Shippers
ON Orders.ShipperID=Shippers.ShipperID
GROUP BY ShipperName;
Essayez - le vous - même »
GROUP BY plus d'une colonne
Nous pouvons également utiliser GROUP BY sur plus d'une colonne, comme ceci:
Exemple
SELECT Shippers.ShipperName, Employees.LastName,
COUNT(Orders.OrderID) AS
NumberOfOrders
FROM ((Orders
INNER JOIN Shippers
ON
Orders.ShipperID=Shippers.ShipperID)
INNER JOIN Employees
ON
Orders.EmployeeID=Employees.EmployeeID)
GROUP BY ShipperName,LastName;
Essayez - le vous - même »