MariaDB SQL

MariaDB WITH ROLLUP (그룹별 요약 구하기)

ssamhago 2023. 11. 15. 11:30
728x90
320x100

with rollup

 

 

 

SELECT WITH ROLLUP

 

 

 

WITH ROLLUP 수정자는 결과 집합에 최상위 요약을 나타내는 행을 추가합니다.

최상위 요약 열은 NULL 값으로 표시됩니다.

GROUP BY 열이 여러 개인 경우 서로 다른 열에 여러 개의 애그리게이트(요약/집계)가 추가됩니다.

LIMIT 절은 동시에 사용할 수 있으며, WITH ROLLUP 행이 추가된 후 적용됩니다.

WITH ROLLUP은 ORDER BY와 함께 사용할 수 없습니다.

GROUP BY 열에 ASC 또는 DESC 절을 사용하면 일부 정렬이 가능합니다.

항상 최상위 요약 행이 마지막에 추가됩니다.

 

 

이 예제에서는 다음 샘플 테이블을 사용합니다
CREATE TABLE booksales (
   country VARCHAR(35), genre ENUM('fiction','non-fiction'), year YEAR, sales INT
);

INSERT INTO booksales VALUES
('Senegal','fiction',2014,12234), ('Senegal','fiction',2015,15647),
('Senegal','non-fiction',2014,64980), ('Senegal','non-fiction',2015,78901),
('Paraguay','fiction',2014,87970), ('Paraguay','fiction',2015,76940),
('Paraguay','non-fiction',2014,8760), ('Paraguay','non-fiction',2015,9030);

샘플 테이블

 

 

 

이 예제에서 WITH ROLLUP 수정자를 추가하면 두 연도를 모두 집계하는 추가 행이 추가됩니다:
예제1.
SELECT year, SUM(sales) FROM booksales GROUP BY year;

예제1

예제2.
SELECT year, SUM(sales) FROM booksales GROUP BY year WITH ROLLUP;

예제2

 

 

 

다음 예제에서는 genre, year, 또는 country 가 변경될 때마다 다른 최상위 요약 행이 추가됩니다:
예제3.
SELECT country, year, genre, SUM(sales)
FROM booksales
GROUP BY country, year, genre;

예제3

예제4.
SELECT country, year, genre, SUM(sales)
FROM booksales
GROUP BY country, year, genre
WITH ROLLUP;

예제4

 

 

 

롤업 후에 적용되는 LIMIT 조항:
예제5.
SELECT country, year, genre, SUM(sales)
FROM booksales
GROUP BY country, year, genre
WITH ROLLUP
LIMIT 4;

예제5

 

 

 

year 내림차순 정렬:
예제6.
SELECT country, year, genre, SUM(sales)
FROM booksales
GROUP BY country, year DESC, genre
WITH ROLLUP;

예제6

 

 

 

 

※ 원문출처 : https://mariadb.com/kb/en/select-with-rollup/

728x90
반응형