전공/프로그래머스
(SQL) 조건에 맞는 사용자와 총 거래금액 조회하기
yha97
2023. 9. 28. 22:53
날짜 : 2023. 09. 28
사용 언어 : oracle
문제


코드
-- 완료된 중고 거래의 총금액이 70만 원 이상인 사람의 회원 ID, 닉네임, 총거래금액을 조회
-- 결과는 총거래금액을 기준으로 오름차순 정렬
select b.user_id, b.nickname, sum(a.price) as total_sales
from used_goods_board a
join used_goods_user b on a.writer_id = b.user_id
where a.status = 'DONE'
group by b.user_id, b.nickname
having sum(a.price) >= 700000
order by total_sales asc;
풀이
- 중고거래 게시물과 중고거래 사이트 유저간 각각 writer_id, user_id를 조인하고, 거래상태가 완료, 즉 'DONE'인 하나의 테이블을 만든다.
- 그 다음 사용자를 기준으로 group by를 실행하여 총 이용금액이 70만원이 넘는 고객의 ID와 닉네임, 총 거래금액을 출력한다.
알게된 점
- join, where절까지는 무난하게 접근했는데 groupby b.user_id만 사용하니까 group by 가 잘못되었다는 오류가 계속 떴다.
- 계속 고민했는데 실마리가 보이지 않아 chat GPT를 이용했고, 문법상으로 b.user_id, b.nickname이 출력하려면 둘 다 묶어서 group by를 실행해야 한다는 것을 알았다.
- 또 select문에서 sum(a.price)를 alias로 설정해서 total_sales로 잡은 다음 having에 써먹었는데 거기서도 문제가 발생했다.
- having에서도 alias의 사용은 하지 말아야겠다.
- 전반적으로 문법에서 꽤 막혀서 고생했던 문제다.
참고 사이트
-