Dichiarazione MySQL GROUP BY
La dichiarazione MySQL GROUP BY
L' GROUP BY
estratto conto raggruppa le righe che hanno gli stessi valori in righe di riepilogo, ad esempio "trova il numero di clienti in ogni paese".
L' GROUP BY
istruzione viene spesso utilizzata con funzioni di aggregazione ( COUNT()
,
MAX()
,
MIN()
, SUM()
,
AVG()
) per raggruppare il set di risultati in base a una o più colonne.
GROUP BY Sintassi
SELECT column_name(s)
FROM table_name
WHERE condition
GROUP BY column_name(s)
ORDER BY column_name(s);
Database dimostrativo
Di seguito è riportata una selezione dalla tabella "Clienti" nel database di esempio 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 Esempi
La seguente istruzione SQL elenca il numero di clienti in ciascun paese:
Esempio
SELECT COUNT(CustomerID), Country
FROM Customers
GROUP BY Country;
La seguente istruzione SQL elenca il numero di clienti in ogni paese, ordinati dall'alto al basso:
Esempio
SELECT COUNT(CustomerID), Country
FROM Customers
GROUP BY Country
ORDER BY COUNT(CustomerID) DESC;
Database dimostrativo
Di seguito è riportata una selezione dalla tabella "Ordini" nel database di esempio 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 |
E una selezione dalla tabella "Spedizionieri":
ShipperID | ShipperName |
---|---|
1 | Speedy Express |
2 | United Package |
3 | Federal Shipping |
GROUP BY con JOIN Esempio
La seguente istruzione SQL elenca il numero di ordini inviati da ciascun mittente:
Esempio
SELECT Shippers.ShipperName, COUNT(Orders.OrderID) AS NumberOfOrders FROM
Orders
LEFT JOIN Shippers ON Orders.ShipperID = Shippers.ShipperID
GROUP BY ShipperName;