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 절은 전체 그룹을 필터링하고 일반적으로 집계 결과를 확인합니다.