MySQL Group By와 함께 사용하기 좋은 With RollUp

·2024년 4월 11일
0

MySQL

목록 보기
13/14
post-thumbnail

With RollUp

WITH ROLLUP을 사용하면 그룹화된 열에서 하위 항목의 합계와 전체 합계를 반환합니다. 이것은 데이터 요약 및 분석에 유용하며 보고서 작성 등의 작업에서 자주 사용됩니다.

예를 들어, 주문 데이터가 있는 테이블에서 날짜별로 주문량을 그룹화하고 부분 합계 및 전체 합계를 보고 싶을 때 WITH ROLLUP을 사용할 수 있습니다. 이를 통해 날짜별 주문량을 요약하고 일별, 주간, 월간, 연간 등의 합계를 확인할 수 있습니다.

SELECT title, AVG(rating) FROM full_reviews
GROUP BY title WITH ROLLUP;

마지막에 Null은 전체 테이블에 대한 통계 요약이다.

그 말인 즉슨, Archer에 대한 평균값은 8.12이고,
Arrested Development에 대한 평균값은 8.08,
Bob's Burgers에 대한 평균값은 7.52....

WITH ROLLUP을 사용하여 title로 묶인 각 그룹의 평균값이 도출되고, 마지막 전체 평균값까지 출력됨을 확인했다.

COUNT 함수를 적용하면 다음과 같다.

마지막에 Null은 전체 테이블에 대한 통계 요약.
잘 작동하는 것을 확인했다.


WITH ROLLUP을 사용한 아래 쿼리는 어떻게 그룹화가 진행될까?

SELECT released_year, genre, title, AVG(rating) FROM full_reviews
GROUP BY released_year, genre, title WITH ROLLUP
ORDER BY released_year;
  1. 먼저 released_year 기준으로 그룹화한다. released_year가 같은 것들이 모여 하나의 그룹을 형성한다.

  2. 1️⃣에서 만들어진 그룹에 genre를 추가한다.
    released_year, genre가 같은 것들이 모여 세분화된 그룹을 형성한다.

  3. 2️⃣에서 만들어진 그룹에 title을 추가한다.
    released_year, genre, title가 같은 것들이 모여 더욱 세분화된 그룹을 형성한다.

released_year, genre로 그룹화를 진행하면 아래와 같은 결과를 확인할 수 있음.

SELECT released_year, genre, AVG(rating) FROM full_reviews
GROUP BY released_year, genre WITH ROLLUP
ORDER BY released_year;

2014년도에 gerne가 여러개인 것을 확인할 수 있다.
동일한 년도에 각각 다른 gerne로 구분되어 그룹화된 것을 확인할 수 있으며, 평균 rating도 gerne별로 다르다는 것을 확인가능하다.

2014년 전체 평균 통계는 8.55인 것도 확인할 수 있다.

profile
- 배움에는 끝이 없다.

0개의 댓글