손영배 블로그 누구나 쉽게 이해하고 습득하기

HAVING 절은 언제 사용하는가? 본문

Interview

HAVING 절은 언제 사용하는가?

손영배 2019. 9. 3. 12:58

- 총 구매액이 1000 이상인 사용자에게만 사은품을 증정하고 싶다면 where 구문으로 생각했을 것이다.

 

SELECT userID AS '사용자', SUM(price*amount) AS '총구매액' FROM buyTbl WHERE SUM(price*amount) > 1000 GROUP BY userID;

 

하지만 오류가 난다.

집계 함수(SUM,,,)는 where절에 나타날 수 없다는 얘기이다. 

 

이럴 때 사용되는 것이 HAVING절이다. HAVING절은 WHERE와 비슷한 개념으로 조건을 제한하는 것이지만, 집계함수에 대해서 조건을 제한하는 것이라고 생각하면 된다. 그리고 HAVING절은 꼭 GROUP BY절 다음에 나와야 한다. 순서가 바뀌면 안된다.

 

select userID AS '사용자', SUM(price*amount) AS '총구매액' FROM buyTbl group by userID HAVING SUM(price*amount) > 1000;