GROUP BY 구성 요소
GROUP BY 절은 다음 구성 요소로 이루어집니다.
- 하나 이상의 비집계 식. 대개 그룹화 열에 대한 참조입니다.
- 일부 그룹에 검색 조건을 충족하는 행이 없어도 GROUP BY 절에서 생성되는 모든 그룹을 반환하도록 지정하는 ALL 키워드(옵션)
- CUBE 또는 ROLLUP
- 별개로 지정할 수 있지만 대개 GROUP BY 절과 함께 사용하는 HAVING 절
식에 집계 함수가 포함되지 않는 경우 식으로 그룹화할 수 있습니다. 예를 들면 다음과 같습니다.
SELECT DATEPART(yy, HireDate) AS Year,
COUNT(*) AS NumberOfHires
FROM AdventureWorks.HumanResources.Employee
GROUP BY DATEPART(yy, HireDate)
결과 집합은 다음과 같습니다.
Year NumberOfHires
----------- -------------
1997 2
2001 21
2000 45
1996 1
2003 3
1999 198
1998 16
2002 4
(8 row(s) affected)
GROUP BY에서는 AS 절이 할당된 결과 집합 열의 이름이 아니라 테이블 또는 뷰 열의 이름을 지정해야 합니다. 예를 들어 GROUP BY DATEPART(yy, HireDate) 절을 GROUP BY Year로 바꿀 수 없습니다.
GROUP BY 절에서 둘 이상의 열을 중첩 그룹으로 나열할 수 있습니다. 즉, 열을 조합하여 테이블을 그룹화할 수 있습니다. 예를 들어 다음 쿼리에서는 제품 ID와 특별 행사 ID로 그룹화된 평균 가격 및 연간 총 매출액을 검색합니다.
USE AdventureWorks;
GO
SELECT ProductID, SpecialOfferID, AVG(UnitPrice) AS 'Average Price',
SUM(LineTotal) AS SubTotal
FROM Sales.SalesOrderDetail
GROUP BY ProductID, SpecialOfferID
ORDER BY ProductID
GO