ВГОРУ

SQL GROUP BY

SQL GROUP BY Опис

Інструкція GROUP BY групує рядки з однаковими значеннями в підсумкові рядки, як-от "знайти кількість клієнтів у кожній країні".

Інструкція GROUP BY часто використовується з агрегатними функціями (COUNT(), MAX(), MIN(), SUM(), AVG()), щоб групувати набір результатів за одним або кількома стовпцями.


GROUP BY Синтаксис

SELECT column_name(s)
FROM table_name
WHERE condition
GROUP BY column_name(s)
ORDER BY column_name(s)

Демонстраційна база даних

Нижче наведено вибірку з таблиці "Customers" ("Клієнти") бази даних "Northwind":

CustomerIDCustomerNameContactNameAddressCityPostalCodeCountry
1Alfreds FutterkisteMaria AndersObere Str. 57Berlin12209Germany
2Ana Trujillo Emparedados y heladosAna TrujilloAvda. de la Constitución 2222México D.F.5021Mexico
3Antonio Moreno TaqueríaAntonio MorenoMataderos 2312México D.F.5023Mexico
4Around the HornThomas Hardy120 Hanover Sq.LondonWA1 1DPUK
5Berglunds snabbköpChristina BerglundBerguvsvägen 8LuleåS-958 22Sweden

SQL GROUP BY Приклади

У наступній SQL-інструкції перераховано кількість клієнтів у кожній країні:

Run SQLSELECT COUNT(CustomerID), Country 
FROM Customers 
GROUP BY Country

У наведеній нижче SQL-інструкції наведено список клієнтів у кожній країні, відсортований від вищого до нижчого:

Run SQLSELECT COUNT(CustomerID), Country 
FROM Customers 
GROUP BY Country 
ORDER BY COUNT(CustomerID) DESC

Демонстраційна база даних

Нижче наведено вибірку з таблиці "Orders" ("Замовлення") бази даних "Northwind":

ProductIDOrderIDCustomerIDEmployeeIDOrderDateShipperID
1102489051996-07-043
2102498161996-07-051
3102503441996-07-082
4102518431996-07-081
5102527641996-07-092

Та вибірку з таблиці "Shippers" ("Відправники"):

ShipperIDShipperNamePhone
1Speedy Express(503) 555-9831
2United Package(503) 555-3199
3Federal Shipping(503) 555-9931

GROUP BY разом з JOIN Приклад

У наведеній нижче SQL-інструкції перелічено кількість замовлень, надісланих кожним відправником:

Run SQLSELECT Shippers.ShipperName, COUNT(Orders.OrderID) AS NumberOfOrders 
FROM Orders 
LEFT JOIN Shippers 
ON Orders.ShipperID = Shippers.ShipperID 
GROUP BY ShipperName