공부/MySQL

[MySQL] where과 having은 언제 사용해야 적절할까?

순제로 2024. 5. 19. 00:34
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