728x90
SQL에서 WHERE와 HAVING 절은 데이터를 필터링하는 데 사용되지만, 사용되는 시점과 조건에 따라 다릅니다.
WHERE 절
- WHERE 절은 기본적으로 SELECT 문에서 데이터를 가져오기 전에 조건을 적용하여 필터링합니다.
- 그룹화하기 전의 개별 레코드에 대해 조건을 적용합니다.
- 집계 함수(AVG, COUNT, SUM 등)를 사용할 수 없습니다.
- 예를 들어, 특정 날짜 이전에 생성된 모든 주문을 검색하려면 WHERE 절을 사용합니다.
SELECT OrderID, OrderDate
FROM Orders
WHERE OrderDate < '2021-01-01';
HAVING 절
- HAVING 절은 주로 GROUP BY 절과 함께 사용되어 그룹화된 결과에 대한 조건을 적용합니다.
- HAVING은 GROUP BY로 생성된 그룹에 대해 집계 함수를 사용하여 조건을 적용할 때 사용됩니다.
- HAVING은 WHERE 절로는 할 수 없는, 집계된 결과에 대한 필터링을 가능하게 합니다.
- 예를 들어, 특정 날짜 이전에 생성된 주문들 중 주문량이 10개 이상인 경우를 찾고 싶다면 HAVING을 사용합니다.
SELECT OrderDate, COUNT(OrderID) AS NumberOfOrders
FROM Orders
WHERE OrderDate < '2021-01-01'
GROUP BY OrderDate
HAVING COUNT(OrderID) > 10;
차이점 요약
- WHERE는 GROUP BY 이전에 적용되어 개별 행에 대한 필터링을 수행합니다.
- HAVING은 GROUP BY 이후에 적용되어 그룹화된 결과에 대한 필터링을 수행합니다.
- HAVING은 집계 함수와 함께 사용할 수 있지만, WHERE는 그렇지 않습니다.
728x90
반응형
'공부 > MySQL' 카테고리의 다른 글
[MySQL] 쿼리와 코드의 용어 차이 (0) | 2024.05.19 |
---|---|
[MySQL] WITH (0) | 2024.04.23 |
[MySQL] UNION ALL과 JOIN (0) | 2024.04.13 |
[MySQL] 셀프조인 (0) | 2024.04.12 |
[MySQL] 재귀 쿼리 (0) | 2024.04.12 |