43. 조건에 맞는 사용자와 총 거래금액 조회하기

문제 링크:https://school.programmers.co.kr/learn/courses/30/lessons/164668

정답 코드:

SELECT
    uu.USER_ID,
    uu.NICKNAME,
    SUM(ub.PRICE) AS TOTAL_SALES
FROM USED_GOODS_USER uu
INNER JOIN USED_GOODS_BOARD ub
    ON ub.WRITER_ID = uu.USER_ID
WHERE STATUS = 'DONE'
GROUP BY uu.USER_ID
HAVING SUM(ub.PRICE) >= 700000
ORDER BY TOTAL_SALES ASC

 

다르게 푼 코드

SELECT
    u.USER_ID,
    u.NICKNAME,
    s.TOTAL_SALES
FROM USED_GOODS_USER u
INNER JOIN (
    SELECT
        WRITER_ID,
        SUM(PRICE) AS TOTAL_SALES
    FROM USED_GOODS_BOARD
    WHERE STATUS = 'DONE'
    GROUP BY WRITER_ID
    HAVING SUM(PRICE) >= 700000
) AS s
    ON u.USER_ID = s.WRITER_ID
ORDER BY s.TOTAL_SALES ASC;

문제 풀이때 했던 생각.

# 테이블에서 완료된 중고 거래의 총금액이 70만 원 이상인 사람
# 회원 ID, 닉네임, 총거래금액
# 총거래금액을 기준으로 오름차순 

# 테이블에서 완료된 중고 거래의 총금액이 70만 원 이상인 사람
SELECT WRITER_ID, SUM(PRICE) AS TOTAL_SALES
FROM USED_GOODS_BOARD
WHERE STATUS = 'DONE'
GROUP BY WRITER_ID
HAVING SUM(PRICE) >= 700000

처음엔 where 서브쿼리를 사용해야 했나 고민했었으나 (결국 필요한 값은 TOTAL_SALES 이였으니)
허나 where절 서브쿼리는 어디까지나 비교하기 위한 용도로
즉,  이 행을 남길지 말지 판단하는 일종의 필터링이다.

TOTAL_SALES 를 출력을 해야하는 문제인만큼  where절 보단 from절로 임시테이블을 만들어 출력하는게 더 맞는 풀이다.

 

 

 

https://papago9211.tistory.com/96

 

코드카타 Level 3 43~45

43. 조건에 맞는 사용자와 총 거래금액 조회하기문제 링크:https://school.programmers.co.kr/learn/courses/30/lessons/164668정답 코드:SELECT uu.USER_ID, uu.NICKNAME, SUM(ub.PRICE) AS TOTAL_SALESFROM USED_GOODS_USER uuINNER JOIN USED_GO

papago9211.tistory.com

 

 

'E.코드카타 > 다르게 풀어보기' 카테고리의 다른 글

join문을 서브쿼리로 풀어보자 1  (1) 2026.01.09

+ Recent posts