Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 누적합
- 시뮬레이션
- join
- 다시
- 투포인터
- 재귀
- 크루스칼
- 다익스트라
- 에라토스테네스의 체
- GROUP BY
- 브루트포스
- 그래프 이론
- DP
- 그리디
- 백트래킹
- 자료구조
- 플로이드-워셜
- 트리
- DFS
- MST
- 분할정복
- 구현
- BFS
- 우선순위큐
- 다이나믹프로그래밍
- 서브쿼리
- 해시
- 수학
- 그래프 탐색
- 다이나믹 프로그래밍
Archives
- Today
- Total
기록하고 까먹지 말기
(SQL) 조건에 맞는 사용자와 총 거래금액 조회하기 본문
날짜 : 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의 사용은 하지 말아야겠다.
- 전반적으로 문법에서 꽤 막혀서 고생했던 문제다.
참고 사이트
-
'전공 > 프로그래머스' 카테고리의 다른 글
(SQL) 자동차 평균 대여 기간 구하기 (0) | 2023.10.01 |
---|---|
게임 맵 최단거리 (0) | 2023.09.29 |
124나라의 숫자 (0) | 2023.09.26 |
이진 변환 반복하기 (0) | 2023.09.25 |
N-Queen (0) | 2023.09.13 |