Codeit Sprint/Weekly_Paper

위클리 페이퍼 #14 - GROUP BY와 HAVING 절

ko_sick 2024. 11. 17. 23:49

GROUP BY절과 HAVING절은 SQL에서 그룹화된 데이터를 필터링할 때 사용하는 명령어이지만 용도와 위치의 차이가 존재함에 따라서 아래에서 설명을 진행하겠습니다.

GROUP BY 절

'GROUP BY'는 데이터를 특정 컬럼 값에 따라 그룹으로 묶을 때 사용 되고 SELECT 절에서 SUM, COUNT, AVG와 같이 각 그룹에서 원하는 통계적 정보를 추출할 때 사용이 가능합니다.

 

SELECT name, SUM(value)
FROM sales_data
GROUP BY name;

 

HAVING 절

'HAVING'절은 GROUP BY절로 그룹화된 데이터에 조건을 부여하여 필터링 할 때 사용합니다. WHERE절과 비슷하게 보이지만, 그룹화된 데이터에만 적용시킬수 있고, 위에서 설명한 집계 함수인 SUM, COUNT, AVG등에 대해서 결과를 적용 시킬 수 있습니다.

 

SELECT name, SUM(value) as total_value
FROM sales_data
GROUP BY name
HAVING total_value >= 100000;

즉. sales_data라는 데이터에서 name을 기준으로 데이터를 필터링을 하고, name별 총 팔린 금액을 필터링 한 후에, 총합계 금액이 100000을 넘는 메뉴만 보여달라는 명령어이다. 

 

즉! GROUP BY는 데이터를 그룹화하는 데 사용되고, HAVING은 그룹화된 데이터에 조건을 걸어 필터링 할 때 사용되므로, 항상 GROUP BY가 먼저나오고 그 후에 HAVING절을 사용해야 한다.