오늘 풀어본 문제
https://school.programmers.co.kr/learn/courses/30/lessons/164668
USED_GOODS_BOARD 와 USED_GOODS_USER 테이블에서 완료된 중고 거래의 총 금액이 70만원 이상인 사람의 회원 ID, 닉네임, 총 거래금액을 조회하는 SQL문을 작성해주세요. 결과는 총 거래금액을 기준으로 오름차순 정렬해주세요.
순차적으로 문제에 접근해보기
우선적으로 두 테이블을 서로 묶어줘야 한다.
SELECT *
FROM USED_GOODS_BOARD INNER JOIN USED_GOODS_USER ON WRITER_ID = USER_ID
그 다음으로 해야할 것
WHERE에 거래가 완료된 내역만 보이게 하기
SELECT *
FROM USED_GOODS_BOARD INNER JOIN USED_GOODS_USER ON WRITER_ID = USER_ID
WHERE STATUS = 'DONE'
다음으론 유저 ID, 닉네임, 금액 순으로 나오게 SELECT 문 적기
SELECT USER_ID, NICKNAME, PRICE
FROM USED_GOODS_BOARD INNER JOIN USED_GOODS_USER ON WRITER_ID = USER_ID
WHERE STATUS = 'DONE'
USER_ID를 그룹화 한 다음 유저별로 거래한 총 금액을 계산하기
SELECT USER_ID, NICKNAME, SUM(PRICE) AS TOTAL_SALES
FROM USED_GOODS_BOARD INNER JOIN USED_GOODS_USER ON WRITER_ID = USER_ID
WHERE STATUS = 'DONE'
GROUP BY USER_ID
총 거래 금액이 70만 이상인 내용만 추려내기
SELECT USER_ID, NICKNAME, SUM(PRICE) AS TOTAL_SALES
FROM USED_GOODS_BOARD INNER JOIN USED_GOODS_USER ON WRITER_ID = USER_ID
WHERE STATUS = 'DONE'
GROUP BY USER_ID
HAVING TOTAL_SALES >= 700000
총 금액량을 순으로 나열되게 하기
SELECT USER_ID, NICKNAME, SUM(PRICE) AS TOTAL_SALES
FROM USED_GOODS_BOARD INNER JOIN USED_GOODS_USER ON WRITER_ID = USER_ID
WHERE STATUS = 'DONE'
GROUP BY USER_ID
HAVING TOTAL_SALES >= 700000
ORDER BY TOTAL_SALES
오늘은 파이썬 공부를 하며 배워본 순차적으로 문제 해결을 시도해보기를 하였다.
오늘 풀어본 문제에선 HAVING 명령어를 처음 다뤄보게 되었으며 HAVING 에 대해 이해도가 올라가는 좋은 계기가 되었다.
HAVING을 사용하지 않는 방법도 있지 않을까 생각을 해보았는데 서브 쿼리를 작성하며 지금의 쿼리문보다 1.5배 정도 분량이 늘어나며 가독성이 안 좋아질 것 같다는 생각이 들어서 HAVING 이나 WHERE로 해결 할 수 있다면 서브쿼리는 최대한 사용하지 않는 편이 좋다고 생각이 들었다.
'SQL' 카테고리의 다른 글
본 캠프 10일차 SQL TIL (0) | 2024.07.06 |
---|---|
본 캠프 9일차 SQL TIL (0) | 2024.07.02 |
본 캠프 7일차 SQL TIL (0) | 2024.06.30 |
본 캠프 6일차 SQL TIL (0) | 2024.06.29 |
본 캠프 5일차 SQL TIL (0) | 2024.06.28 |