MySQL에서 SUM() 함수를 GROUP BY 절과 함께 사용하면, SUM() 함수는 GROUP BY 절에 지정된 각 그룹별로 합계를 계산합니다. 이 조합의 가장 큰 장점은 특정 그룹별 총합을 손쉽게 구할 수 있다는 점입니다.
예제 테이블 소개
이 개념을 이해하기 위해 다음과 같은 레코드를 가진 'employee_tbl' 테이블을 살펴보겠습니다.
mysql> SELECT * FROM employee_tbl; +------+------+------------+--------------------+ | id | name | work_date | daily_typing_pages | +------+------+------------+--------------------+ | 1 | John | 2007-01-24 | 250 | | 2 | Ram | 2007-05-27 | 220 | | 3 | Jack | 2007-05-06 | 170 | | 3 | Jack | 2007-04-06 | 100 | | 4 | Jill | 2007-04-06 | 220 | | 5 | Zara | 2007-06-06 | 300 | | 5 | Zara | 2007-02-06 | 350 | +------+------+------------+--------------------+ 7 rows in set (0.00 sec)
GROUP BY와 함께 SUM() 사용하기
아래 쿼리는 각 사람별로 관련된 모든 레코드를 합산하여, 직원마다 입력한 총 페이지 수를 보여줍니다.
mysql> SELECT name, SUM(daily_typing_pages)
-> FROM employee_tbl GROUP BY name;
+------+-------------------------+
| name | SUM(daily_typing_pages) |
+------+-------------------------+
| Jack | 270 |
| Jill | 220 |
| John | 250 |
| Ram | 220 |
| Zara | 650 |
+------+-------------------------+
5 rows in set (0.17 sec)결과 분석
위 결과를 보면 각 이름이 하나의 그룹으로 묶여 해당 그룹의 daily_typing_pages 값들이 모두 더해진 것을 확인할 수 있습니다. 예를 들어 Jack은 두 개의 레코드(170 + 100)가 있어 총 270이 되었고, Zara 역시 두 개의 레코드(300 + 350)가 합산되어 650이 되었습니다.
이처럼 GROUP BY 절과 SUM() 함수를 함께 사용하면 전체 데이터를 일일이 확인하지 않고도 그룹별 집계 결과를 한 번의 쿼리로 빠르게 얻을 수 있어, 데이터 분석 및 보고서 작성 시 매우 유용합니다.