728x90
GROUP BY절이란
https://seokmimmmmmmmm.tistory.com/225
해당 글 참고
요약하자면 특정 그룹마다 집계 함수를 구하기 위한 방법으로 GROUP BY절을 사용하는 것이다 !!!
GROUP BY절에 집계 함수를 사용하지 않기도 하니까...
특정 그룹마다 집계 함수를 사용하려면 GROUP BY절을 사용한다고 하는 것이 더 알맞는 것 같네...? 같은 말인가...?
암튼 !!!
그래서 HAVING절은 뭔데 ?
HAVING절 활용
GROUP BY절에 조건에 맞는 대상만 GROUPING하고 싶은 경우에는 HAVING절을 사용하면 된다 !처음 SQL을 접한 사람이라면 "그럼 그냥 WHERE절에 조건을 걸면 되는거 아니야?" 할 수 있겠지만, WHERE절에는 집계 함수를 사용해서 조건을 거는 것은 불가능하다.
WHERE절 대신 HAVING절을 사용하는 이유는, WHERE절이 GROUP BY절보다 먼저 수행되기 때문에 GROUP BY절의 조건은 따로 고려해줘야 하기 때문이다 !
HAVING절의 예시를 들어보자면,
"출하 날짜가 23년 2월인 아이스크림 중 같은 가게에서 출하된 아이스크림의 평균 총 주문량"을 구하는 쿼리이다 !
-- 출하 날짜가 23년 2월인 아이스크림 중 같은 가게에서 출하된 아이스크림의 평균 총 주문량
SELECT
SHOP_ID,
AVG(TOTAL_ORDER)
FROM
FIRST_HALF
WHERE
SHIPMENT_DATE
LIKE
'2023-02%'
GROUP BY
SHOP_ID
HAVING
AVG(TOTAL_ORDER) >= 5000
ORDER BY
SHOP_ID;
쿼리 실행 순서
💡 FROM -> WHERE -> GROUP BY -> HAVING -> SELECT -> ORDER BY
728x90