티스토리 뷰

728x90

GROUP BY 구문은 원하는 컬럼으로의 그룹핑된 값을 출력한다.

SELECT CITY, StateProvinceID, COUNT(*) [CNT]
FROM [AdventureWorks2014].[Person].[Address]
GROUP BY CITY, StateProvinceID
ORDER BY CITY

이 때, WITH ROLLUP 구문을 사용하게 되면 그룹핑된 각 컬럼별로 집계가 가능하다.

SELECT CITY, StateProvinceID, COUNT(*) [CNT]
FROM [AdventureWorks2014].[Person].[Address]
GROUP BY CITY, StateProvinceID
WITH ROLLUP
ORDER BY CITY

SELECT CITY, StateProvinceID, COUNT(*) [CNT]
FROM [AdventureWorks2014].[Person].[Address]
GROUP BY ROLLUP(CITY, StateProvinceID)
ORDER BY CITY

아래처럼 CITY = Albany, StateProvinceID = 54인 데이터의 COUNT(*),  CITY = Albany, StateProvinceID = 58인 데이터의 COUNT(*), CITY = Albany인 데이터의 COUNT(*)를 모두 출력한다.

CUBE() 함수는 GROUP BY 컬럼들의 모든 경우의 수를 출력한다.

ROLLUP()과 CUBE()의 결과는 아래와 같이 다르다고 할 수 있다.

  • ROLLUP(A, B, C) -> (A, B, C) / (A, B) / (A) / ()
  • CUBE(A, B, C) -> (A, B, C) / (A, B) / (A, C) / (B, C) / (A) / (B) / (C) / ()
SELECT City, StateProvinceID, COUNT(*) [CNT]
FROM [AdventureWorks2014].[Person].[Address]
WHERE City IS NOT NULL
GROUP BY CUBE(City, StateProvinceID)
ORDER BY City, StateProvinceID

 

 

728x90
LIST
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함