MySQL) WITH ROLLUP
GROUP BY 절과 함께 사용되는 총합 또는 층간 합계 함수
[CREATE TABLE]
CREATE TABLE price (
Category1 VARCHAR(10),
Category2 VARCHAR(10),
Cnt INT
);
위와 같은 TABLE 을 만들었다.
[INSERT INTO price]
INSERT INTO price VALUES
('Book', 'A', 12),
('Book', 'B', 8),
('Book', 'C', 23),
('Clothes', 'A', 9),
('Clothes', 'B', 11),
('Clothes', 'C', 7),
('Elec', 'A', 52),
('Elec', 'B', 19);
price TABLE에 위와 같은 data들을 삽입하였다.
[SELECT ~ WITH ROLLUP]
SELECT Category1, Category2, COUNT(*), SUM(Cnt)
FROM price
GROUP BY Category1, Category2 WITH ROLLUP;
위와 같은 실행결과가 나왔다. ROLLUP 함수를 통해 GROUP 들의 소분류에 대한 결과도 파악할 수 있다. 처리되는 과정은 아래와 같다.
4, 8, 11 번째 줄은 각각 Category1의 값으로 'Book', 'Clothes', 'Elec'을 가지는 Data 들의 총 개수와 Cnt의 합을 나타낸다. Category1이 'Book'인 Data들의 소합계, 'Clothes'인 Data들의 소합계, 'Elec'인 Data들의 소합계를 나타내는 것 이다.
12 번째 줄은 모든 Data들의 총 개수와 Cnt의 합을 나타낸다.
ROLLUP 함수를 통해 해당 GROUP 의 GROUP별 소분류에 대한 결과도 출력할 수 있는 것 이다.
[ROLLUP을 사용하지 않은 SELECT]
SELECT Category1, Category2, COUNT(*), SUM(Cnt)
FROM price
GROUP BY Category1, Category2;
ROLLUP을 사용하지 않은 채 SELECT를 해 보았다.
그 결과 GROUP을 소분류한 것에 대한 Data의 결과는 출력되지 않았다.
결론 : ROLLUP을 통해 GROUP들의 각각의 분류들에 대한 Data를 확보할 수 있다.
728x90
'Data Base > SQL' 카테고리의 다른 글
MySQL) 샘플 데이터 테이블 생성 (0) | 2022.01.04 |
---|---|
MySQL) AUTO_INCREMENT (0) | 2022.01.04 |
SQL) 문자열 다루기_2 (LOCATE/LEFT/RIGHT/LOWER/UPPER) (0) | 2021.09.10 |
SQL) 문자열 다루기_1 (LENGTH/CONCAT/SUBSTRING) (0) | 2021.09.10 |
SQL) 순위함수(RANK, DENSE_RANK, ROW_NUMBER) (0) | 2021.09.03 |
댓글