반응형
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은 각각 다른 시점에 다른 범위의 데이터에 조건을 적용하는 데 사용됩니다.
반응형
'CODE > CodeKnowledge' 카테고리의 다른 글
네트워크 PDU(Protocol Data Unit)은 무엇일까? (0) | 2024.05.12 |
---|---|
[네트워크]L2,L3,L4,L7 이게 다 뭐야...(feat. 로드밸런서) (0) | 2024.05.12 |
NAS vs CDN (1) | 2024.02.12 |
[java] jdk와 jvm (0) | 2024.02.09 |
톰캣 vs. 레진: 자바 웹 애플리케이션 서버 비교 (0) | 2024.02.06 |
댓글