MariaDB / Query / GROUP BY
예제로 사용한 데이터베이스는 employees입니다.
GROUP BY를 사용하면 공통 데이터를 갖고 있는 행들을 집계할 수 있습니다.
예를 들어 사번이 10001인 사원의 급여 지급 내역을 알고 싶다면 다음과 같이 쿼리합니다.
SELECT emp_no, salary FROM salaries WHERE emp_no = 10001; +--------+--------+ | emp_no | salary | +--------+--------+ | 10001 | 60117 | | 10001 | 62102 | | 10001 | 66074 | | 10001 | 66596 | | 10001 | 66961 | | 10001 | 71046 | | 10001 | 74333 | | 10001 | 75286 | | 10001 | 75994 | | 10001 | 76884 | | 10001 | 80013 | | 10001 | 81025 | | 10001 | 81097 | | 10001 | 84917 | | 10001 | 85112 | | 10001 | 85097 | | 10001 | 88958 | +--------+--------+
급여의 합계를 알고 싶다면 SUM 함수를 사용합니다.
SELECT emp_no, SUM(salary) FROM salaries WHERE emp_no = 10001; +--------+-------------+ | emp_no | SUM(salary) | +--------+-------------+ | 10001 | 1281612 | +--------+-------------+
사원별 급여 합계를 일괄 출력하고 싶다면 GROUP BY를 사용합니다.
SELECT emp_no, SUM(salary) FROM salaries GROUP BY emp_no LIMIT 10; +--------+-------------+ | emp_no | SUM(salary) | +--------+-------------+ | 10001 | 1281612 | | 10002 | 413127 | | 10003 | 301212 | | 10004 | 904196 | | 10005 | 1134585 | | 10006 | 606179 | | 10007 | 991574 | | 10008 | 147923 | | 10009 | 1409122 | | 10010 | 460338 | +--------+-------------+