CODE/CodeKnowledge
HAVING vs WHERE
솔리닉__
2024. 3. 25. 21:53
반응형
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은 각각 다른 시점에 다른 범위의 데이터에 조건을 적용하는 데 사용됩니다.
반응형