개발은 처음이라 개발새발

[My SQL] GROUP BY 본문

mysql

[My SQL] GROUP BY

leon_choi 2022. 10. 10. 12:19
반응형

SQL에는 파이썬 처럼 group by가 존재합니다. group by는 말그대로 그룹으로 묶어주는 역할을 합니다. 이를 통해서 그룹별로 수량이 어떻게 되는지 그리고 품목 남은 수량의 가격이나 구매자가 총 얼마를 결재 했는지에 대해 알 수 있습니다. 우선 buytbl에서 사용자별 구매한 물품 개수에 대해 알아보겠습니다.

select userid, sum(amount) from buytbl group by userid;
+--------+-------------+
| userid | sum(amount) |
+--------+-------------+
| BBK    |          19 |
| EJW    |           4 |
| JYP    |           1 |
| KBS    |           6 |
| SSK    |           5 |
+--------+-------------+

네 이렇게 유저 id별 총 구매 개수를 나타내봤는데요. 수량에 해당하는 amount는 sum 연산자를 활용해서 계산를 했습니다. sum같은 연산자들을 집계 함수라고 하는데 group by함께 잘 사용되니 다음 시간에 간략하게 소개를 해보도록하겠습니다. 그리고 컬럼을 보면 userid, sum(amount)라고 그대로 나와 있는데요. 이를 별칭(allas)으로 변경할 수 있는데요. AS '별칭'을 적으면 됩니다. 그러면 별칭을 정해보겠습니다.

select userid as '사용자 아이디', sum(amount) as '총 구매 개수'  from buytbl group by userid;

+---------------+--------------+
| 사용자 아이디 | 총 구매 개수 |
+---------------+--------------+
| BBK           |           19 |
| EJW           |            4 |
| JYP           |            1 |
| KBS           |            6 |
| SSK           |            5 |
+---------------+--------------+

이번에는 구매액 총합을 출력해보겠습니다. 사용자가 지출한 총액을 구해야 하기 때문에 사용자 아이디를 기준으로 사용자가 구매한 제품의 가격*수량의 합산을 모두 더하면 됩니다. 

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

이렇게 총 구매액까지 구했는데요. 다음 시간에는 집계 함수에 대해 소개해보고 order by를 통한 정렬도 함께 다뤄보겠습니다.

반응형

'mysql' 카테고리의 다른 글

[My SQL] Having 절  (0) 2022.10.11
[My SQL] 집계 함수 & GROUP BY 2편  (0) 2022.10.10
[My SQL] 서브쿼리  (2) 2022.10.03
[My SQL] LIKE 연산자 활용하기  (1) 2022.10.02
[My SQL] WHERE절의 기본과 BETWEEN...AND, IN  (2) 2022.10.02