데이터 분석/SQL

[SQL 문법] CUBE () 절

참치바나나 2020. 11. 5. 19:54

다차원의 소계를 구한다

브랜드brand 별, 세그먼트segment 별 소계 및 전체 합계를 보고 싶다

역시 GRUOPING SETS로 아래와 같이 할 수 있다

SELECT
	brand,
	segment,
	sum(revenue)
FROM
	sales_items
GROUP BY
	GROUPING SETS ( 
	(brand, segment),
	(brand),
	(segment),
	())
ORDER BY
	brand,
	segment;

이를 쉽게 하는 방법이 CUBE()

SELECT
	brand,
	segment,
	sum(revenue)
FROM
	sales_items
GROUP BY
	CUBE (brand,segment)
ORDER BY
	brand,
	segment;

CUBE 절에 지정된 컬럼 수가 N개 면, 2의 N승 개의 레벨(유형)을 보여준다. 이전 ROLLUP 글과 비교해보자

  1. (brand, segment) 별 소계
  2. brand 별 소계
  3. segment 별 소계
  4. 전체 합계

브랜드를 기준으로 각 세그먼트의 소계 및 브랜드 별 합계를 보고 싶다 - 분할 CUBE

브랜드brand를 따로 group by 한다.

SELECT
	brand,
	segment,
	sum(revenue)
FROM
	sales_items
GROUP BY
	brand ,
	CUBE (segment)
ORDER BY brand;

결과

재밌게도 결과가 분할 ROLLUP과 같다

아래는 분할 ROLLUP. 분할 ROLLUP 글

SELECT
	brand,
	segment,
	sum(revenue)
FROM
	sales_items
GROUP BY
	brand ,
	ROLLUP (segment)
ORDER BY brand;

'데이터 분석 > SQL' 카테고리의 다른 글

[SQL 문법] AVG 함수  (0) 2020.11.05
[SQL 문법] 분석 함수  (0) 2020.11.05
[SQL 문법] ROLLUP ( ) 절  (0) 2020.11.05
[SQL 문법] GROUPING SET 절, GROUPING 함수  (0) 2020.11.04
[SQL 문법] HAVING  (0) 2020.11.04