MySQL에서 GROUP BY 절에 여러 개의 열(column)을 지정하면 결과 집합(result set)을 더 작은 그룹으로 세분화할 수 있습니다. GROUP BY 절에 지정하는 열의 수가 많아질수록 각 그룹의 크기는 더 작아지며, 따라서 더욱 구체적이고 상세한 데이터 분석이 가능합니다.
여러 열을 사용한 GROUP BY의 동작 방식
GROUP BY 절에 여러 열을 지정하면 MySQL은 첫 번째 열을 기준으로 먼저 그룹화한 뒤, 그 안에서 두 번째 열의 값에 따라 그룹을 다시 나누는 방식으로 동작합니다. 이렇게 하면 단일 열만으로는 파악하기 어려운 복합적인 패턴까지 손쉽게 집계할 수 있습니다.
예제
다음 예제는 직원(employees) 테이블에서 직급(designation)과 입사 연도(YEAR(DoJ)), 두 개의 열을 기준으로 그룹화하여 직급별·연도별 직원 수를 집계하는 쿼리입니다.
mysql> Select designation, YEAR(Doj), count(*) from employees GROUP BY designation, YEAR(DoJ); +-------------+-----------+----------+ | designation | YEAR(Doj) | count(*) | +-------------+-----------+----------+ | Asso.Prof | 2013 | 1 | | Asst.Prof | 2015 | 1 | | Asst.Prof | 2016 | 1 | | Prof | 2009 | 2 | | Prof | 2010 | 1 | +-------------+-----------+----------+ 5 rows in set (0.00 sec)
위 결과를 살펴보면 'Prof' 직급이 2009년 입사자 2명과 2010년 입사자 1명으로 나뉘어 집계된 것을 확인할 수 있습니다. 만약 GROUP BY 절에 designation 열 하나만 지정했다면, Prof 직급 전체가 하나의 그룹으로 합쳐져 총 3명이라는 결과만 얻었을 것입니다. 이처럼 여러 열을 함께 지정하면 데이터를 원하는 수준까지 세밀하게 나누어 분석할 수 있다는 점이 GROUP BY 절에서 여러 열을 사용하는 핵심적인 장점입니다.