[코딩테스트] 29. 조건에 맞는 사용자와 총 거래금액 조회하기

편준민's avatar
Apr 15, 2025
[코딩테스트] 29. 조건에 맞는 사용자와 총 거래금액 조회하기

테이블 index

📌

USED_GOODS_BOARD 

Column name
Type
Nullable
BOARD_ID
VARCHAR(5)
FALSE
WRITER_ID
VARCHAR(50)
FALSE
TITLE
VARCHAR(100)
FALSE
CONTENTS
VARCHAR(1000)
FALSE
PRICE
NUMBER
FALSE
CREATED_DATE
DATE
FALSE
STATUS
VARCHAR(10)
FALSE
VIEWS
NUMBER
FALSE

USED_GOODS_USER 

Column name
Type
Nullable
USER_ID
VARCHAR(50)
FALSE
NICKNAME
VARCHAR(100)
FALSE
CITY
VARCHAR(100)
FALSE
STREET_ADDRESS1
VARCHAR(100)
FALSE
STREET_ADDRESS2
VARCHAR(100)
TRUE
TLNO
VARCHAR(20)
FALSE

문제

💡
USED_GOODS_BOARD와 USED_GOODS_USER 테이블에서 완료된 중고 거래의 총금액이 70만 원 이상인 사람의 회원 ID, 닉네임, 총거래금액을 조회하는 SQL문을 작성해주세요. 결과는 총거래금액을 기준으로 오름차순 정렬해주세요.

예시

notion image

풀이

판매된 상품만 출력
select WRITER_ID, PRICE, STATUS, VIEWS from USED_GOODS_BOARD where STATUS = "DONE"
USED_GOODS_USER의 닉네임이 필요하기 때문에 inner join
select * from USED_GOODS_BOARD bt INNER join USED_GOODS_USER ut ON bt.WRITER_ID = ut.USER_ID where STATUS = "DONE"
WRITER_ID가 같으면 price를 합쳐서 70만원이 넘는 유저를 찾아야하기 때문에 WRITER_ID로 그룹핑
select * from USED_GOODS_BOARD bt INNER join USED_GOODS_USER ut ON bt.WRITER_ID = ut.USER_ID where STATUS = "DONE" group by WRITER_ID
각 그룹의 price를 더하여 별칭을 TOTAL_SALES로 주었고, 별칭으로 조건을 걸고 싶기 때문에 having을 사용하였다.
select *, sum(price) TOTAL_SALES from USED_GOODS_BOARD bt INNER join USED_GOODS_USER ut ON bt.WRITER_ID = ut.USER_ID where STATUS = "DONE" group by WRITER_ID having TOTAL_SALES >= 700000;
이후에 order by를 이용하여 오름차순으로 정렬과 필요한 데이터만 뽑아주었다.
select ut.USER_ID, ut.nickname, sum(price) TOTAL_SALES from USED_GOODS_BOARD bt INNER join USED_GOODS_USER ut ON bt.WRITER_ID = ut.USER_ID where STATUS = "DONE" group by WRITER_ID having TOTAL_SALES >= 700000 order by TOTAL_SALES
 
Share article

YunSeolAn