개발은 처음이라 개발새발

[My SQL] Having 절 본문

mysql

[My SQL] Having 절

leon_choi 2022. 10. 11. 09:00
반응형

우선 group by를 소개했을 때 예제로 적어보았던 사용자별 총 구매액을 다시 불러 와보겠습니다.

select userid as '사용자 아이디', sum(price*amount) as '총 구매액'  from buytbl group by userid;
+---------------+-----------+
| 사용자 아이디 | 총 구매액 |
+---------------+-----------+
| BBK           |      1920 |
| EJW           |        95 |
| JYP           |       200 |
| KBS           |      1210 |
| SSK           |        75 |
+---------------+-----------+

지난 번에는 이렇게 총 구매액만을 구해봤는데 여기에서 더 나아가 총 구매액이 1000 이상인 사용자에게만 사은품을 증정하고 싶다면 어떻게 해야 할까요? 물론 지금은 둘밖에 없지만 만일 실제로 이것을 실무에 적용했을 때는 수천, 수만개가 되기에 일일이 이걸 센다면 SQL을 배우는 의미가 없겠죠? 이럴 때 Having 절을 사용하게 됩니다. 기존에 주로 조건식 옆에 있던 where절은 안되나? 라는 의문이 들겠지만 집계함수는 where 절에 나타낼 수 없습니다. 그렇기에 집계 함수에 대한 조건을 제한하는 것은 Having 절이다 라는 것을 꼭 기억해두시면 좋습니다.

 

그리고 Having 절은 where과 다르게 group by의 앞이 아닌 반드시 뒤에 적어야 한다는 점도 기억해두시기 바랍니다. 그렇다면 Having 절을 통해 1000이상 지불한 사용자들만을 추출해 보겠습니다.

select userid as '사용자' , sum(price*amount) as '총 구매액'
from buytbl
group by userid
having sum(price *amount) > 1000;

+--------+-----------+
| 사용자 | 총 구매액 |
+--------+-----------+
| BBK    |      1920 |
| KBS    |      1210 |
+--------+-----------+

네 이렇게 having 절을 활용해 총 구매액이 1000 이상인 사용자만 리스팅해봤습니다. 이제 SQL이 조금씩 손에 익기 시작하는 거 같은데요. 아직은 짧디 짧은 쿼리이기에 초급을 벗어났다고 전혀 볼순 없지만 간략한 것이라도 차근차근 포스팅 하며 배워 가도록 하겠습니다.

반응형

'mysql' 카테고리의 다른 글

MySQL 기본 연산 COUNT, SUM, AVG, MIN/MAX  (0) 2023.04.10
CASE...WHEN...THEN  (0) 2022.11.13
[My SQL] 집계 함수 & GROUP BY 2편  (0) 2022.10.10
[My SQL] GROUP BY  (4) 2022.10.10
[My SQL] 서브쿼리  (2) 2022.10.03