GROUP BY에 대해 배웠으니, 이제 유사한 값을 가진 행들을 별도의 그룹으로 묶는 매력적인 명령어를 알게 되었습니다. 그런데 이 그룹화된 결과를 특정 조건에 따라 더 세밀하게 필터링하고 싶다면 어떻게 할까요? 바로 HAVING이 그 역할을 합니다.
HAVING 절이란?
•
HAVING을 GROUP BY 결과에 대한 필터로 생각할 수 있습니다. WHERE 절이 개별 행을 필터링하는 반면, HAVING 절은 GROUP BY 명령에 의해 집계된 행 그룹을 필터링합니다. 즉, HAVING은 GROUP BY로 생성된 요약 데이터에 조건을 적용할 수 있게 해줍니다.
정확한 필터링을 위한 HAVING 사용
•
예를 들어, 판매 기록 데이터베이스에서 일정 임계값을 초과하는 매출을 달성한 영업사원을 찾고 싶다고 가정해 봅시다. GROUP BY와 HAVING을 결합함으로써 기대를 초과하는 영업사원을 식별할 수 있습니다.
HAVING의 구문
•
HAVING의 구문은 WHERE 절과 매우 유사합니다:
◦
SELECT column1, column2, aggregate_function(column3) FROM table_name GROUP BY column1, column2 HAVING aggregate_function(column3) condition;
◦
여기서 aggregate_function은 SUM, COUNT, AVG 등의 집계 함수가 될 수 있으며, condition은 그룹화된 결과에 적용하고자 하는 필터 조건입니다.
실제 적용
•
판매 데이터가 포함된 데이터베이스를 다루고 있다고 상상해 보세요. 이미 GROUP BY를 사용하여 각 영업사원별로 판매를 그룹화했고, 100건 이상의 판매를 달성한 사람을 필터링하고 싶습니다. 쿼리는 다음과 같을 수 있습니다:
◦
SELECT salesperson_id, COUNT(*) AS total_sales FROM sales GROUP BY salesperson_id HAVING COUNT(*) > 100;
◦
이 예에서는 salesperson_id를 선택하고 각 사람의 판매 수를 계산합니다. HAVING 절은 100건을 초과하는 그룹만 포함하도록 보장합니다.
다양한 가능성
•
HAVING은 SUM, AVG, MAX와 같은 다양한 집계 함수와 함께 사용될 수 있으며, AND 및 OR과 같은 논리 연산자를 사용하여 필터를 더 세밀하게 조정할 수 있습니다. 이러한 유연성은 데이터에서 정확히 원하는 통찰력을 추출할 수 있게 해줍니다.
축하합니다! HAVING 절을 사용하여 그룹화된 데이터를 필터링하는 방법을 터득했습니다. 이제 요약된 데이터를 더