TOP

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)

데모 데이터베이스

다음은 "Northwind" 데이터베이스의 "Customers"("고객") 테이블의 샘플입니다.

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

데모 데이터베이스

다음은 "Northwind" 데이터베이스의 "Orders"("Orders") 테이블의 샘플입니다.

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

그리고 "Shippers"("Senders") 테이블의 샘플은 다음과 같습니다.

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