본문 바로가기
CODE/CodeKnowledge

HAVING vs WHERE

by 솔리닉__ 2024. 3. 25.
반응형

HAVING 절과 WHERE 절은 SQL에서 데이터를 쿼리하는 방법에 있어 중요한 구문입니다. 둘 다 특정 조건에 따라 데이터를 필터링하는 데 사용되지만, 사용되는 시점과 적용되는 데이터의 범위에 차이가 있습니다.

WHERE 절

  • WHERE 절은 기본적으로 데이터를 선택하기 전에 행(row) 수준에서 조건을 적용합니다. 즉, SELECT 문에서 지정된 컬럼들에 대해 데이터를 가져오기 전에 해당 조건을 만족하는 행만 선택됩니다.
  • WHERE 절은 그룹 함수(집계 함수)와 함께 사용될 수 없습니다. 예를 들어, SUM(), AVG(), COUNT() 등의 함수에 직접 조건을 적용할 수 없습니다.
  • 기본적으로 특정 행이 쿼리의 결과로 포함될지를 결정하는 데 사용됩니다.

HAVING 절

  • HAVING 절은 그룹 함수를 사용한 후의 결과에 조건을 적용할 때 사용됩니다. 즉, GROUP BY로 그룹화된 결과에 대해 조건을 지정하는 데 사용됩니다.
  • HAVING 절은 그룹 함수와 함께 사용되며, 특정 그룹이 최종 결과에 포함될지를 결정합니다.
  • HAVING 절은 WHERE 절 후에 적용됩니다. 먼저 WHERE 절을 통해 특정 조건을 만족하는 행들을 선택한 후, GROUP BY와 HAVING을 통해 이들 중 further 조건을 만족하는 그룹들만을 최종 결과로 가져옵니다.

예시

SELECT EmployeeID, SUM(Salary)
FROM Employees
WHERE DepartmentID = 'Sales'
GROUP BY EmployeeID
HAVING SUM(Salary) > 50000;
  • WHERE 절은 DepartmentID가 'Sales'인 행들만을 선택합니다. 이는 데이터를 그룹화하기 전에 적용됩니다.
  • GROUP BY는 EmployeeID 별로 데이터를 그룹화합니다.
  • HAVING 절은 그룹화된 결과 중에서 SUM(Salary)가 50000을 초과하는 그룹만을 최종 결과로 선택합니다.

이처럼 WHERE와 HAVING은 각각 다른 시점에 다른 범위의 데이터에 조건을 적용하는 데 사용됩니다.

 
 
 

 




반응형

댓글