HAVING을 통해 그룹 필터링
GROUP BY 절을 통해 그룹을 만든 경우 결과를 추가로 필터링할 수 있습니다. HAVING 절은 그룹에 대한 필터의 역할을 합니다. 이는 WHERE 절이 FROM 절에서 반환된 행에 대한 필터 역할을 하는 방식과 비슷합니다.
HAVING 절을 사용하면 WHERE 절의 조건자와 개념적으로 유사한 검색 조건을 만든 다음 GROUP BY 절에서 반환되는 각 그룹을 테스트할 수 있습니다.
다음 예에서는 각 고객의 주문 수를 계산하고 10개 이상의 주문을 한 고객만 포함하도록 결과를 필터링합니다.
SELECT CustomerID,
COUNT(*) AS OrderCount
FROM Sales.SalesOrderHeader
GROUP BY CustomerID
HAVING COUNT(*) > 10;
HAVING과 WHERE의 비교
HAVING 절과 WHERE 절이 모두 데이터를 필터링하지만 WHERE 절은 FROM 절에서 반환되는 행에 작동한다는 점에 유의해야 합니다. WHERE 절 다음에 GROUP BY ... HAVING 섹션이 쿼리에 있는 경우 WHERE 절은 GROUP BY가 처리되기 전에 행을 필터링하여 만들 수 있는 그룹을 제한할 수 있습니다.
HAVING 절은 GROUP BY 이후에 처리되며 세부 정보 행이 아닌 그룹에서만 작동합니다. 요약:
- WHERE 절은 그룹을 구성하기 전에 행을 필터링합니다.
- HAVING 절은 전체 그룹을 필터링하고 일반적으로 집계 결과를 확인합니다.