기록하고 까먹지 말기

(SQL) 조건에 맞는 사용자와 총 거래금액 조회하기 본문

전공/프로그래머스

(SQL) 조건에 맞는 사용자와 총 거래금액 조회하기

yha97 2023. 9. 28. 22:53

날짜 : 2023. 09. 28

사용 언어 : oracle

 

문제

https://school.programmers.co.kr/learn/courses/30/lessons/164668?language=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의 사용은 하지 말아야겠다.

- 전반적으로 문법에서 꽤 막혀서 고생했던 문제다.

 

 

참고 사이트

 

'전공 > 프로그래머스' 카테고리의 다른 글

(SQL) 자동차 평균 대여 기간 구하기  (0) 2023.10.01
게임 맵 최단거리  (0) 2023.09.29
124나라의 숫자  (0) 2023.09.26
이진 변환 반복하기  (0) 2023.09.25
N-Queen  (0) 2023.09.13