GROUP BY
명령어를 통해 특정 컬럼을 기준으로 그룹화할 수 있습니다. 그룹화를 하면 조회된 데이터를 통계 내기 위한 집계 함수 (avg, sum)을 사용하기에 용이해집니다.
SELECT name, COUNT(name), SUM(quantity) FROM test_table GROUP BY name;
GROUP BY로 그룹화 하지 않은 컬럼은 SELECT 해도 정확한 데이터가 나오지 않습니다. 즉, 그룹화 하지 않은 컬럼은 집계 함수를 통해서만 조회하도록 해야합니다. 아래는 그룹화 컬럼이 아닌 quantity 컬럼도 조회하는 경우의 예제입니다.
SELECT name, quantity, COUNT(name), SUM(quantity) FROM test_table GROUP BY name;
GROUP BY 절에서 조건을 주려면 WHERE가 아닌, HAVING 절을 사용해야 합니다.
SELECT 실행 순서를 보면, WHERE 절이 GROUP BY 보다 먼저 실행되기 때문에, GROUP BY 에 대응되는 HAVING 절이 있습니다.
HAVING은 GROUP BY 뒤에 작성하며, WHERE 와 같은 형식의 조건절을 작성할 수 있습니다.