[SQL] 프로그래머스 - 조건에 맞는 사용자와 총 거래금액 조회하기

iinnuyh_s·2024년 1월 4일
0

SQL

목록 보기
8/17
post-thumbnail
post-custom-banner

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

풀이

  • 얘도 서브쿼리,조인 문제.근데 앞 문제들이랑 다른 점은 주어지는 테이블이 두 개라는 점?

  • USED_GOODS_BOARD 는 중고거래 상품들 정보가 있는 테이블이고 USED_GOODS_USER는 회원들의 정보가 있는 테이블이다.

  • 둘을 JOIN 해야겠다! 먼저 생각이 든다.
    조건을 더 보면 1)완료된 중고거래 2)총금액이 70만원 이상 인 사람의 3)회원ID, 닉네임, 총거래금액을 구해야 하므로,
    👆 USED_GOODS_BOARD 테이블에서 회원ID로 그룹핑을 하고, 집계함수 SUM을 이용하여 70만원 이상인 것들을 구한 뒤,
    🤘 STATUS가 DONE인지를 확인한 서브쿼리를 작성하면 된다.
    🤟 최종으로 조회해야 하는 정보는 회원ID,닉네임,총거래금액이므로 USED_GOODS_USER와 위 서브쿼리를 JOIN 하여, USER_ID가 같은 행을 조회하고 총거래금액을 기준으로 오름차순 정렬하면 끝.

    🙆‍♀️ 정답 코드
    SELECT A.USER_ID,A.NICKNAME, B.TOTAL_SALES
    FROM USED_GOODS_USER A JOIN (
    SELECT SUM(PRICE) AS TOTAL_SALES, WRITER_ID 
    FROM USED_GOODS_BOARD
    WHERE STATUS="DONE"
    GROUP BY WRITER_ID
    HAVING SUM(PRICE)>=700000) B
    ON A.USER_ID=B.WRITER_ID
    ORDER BY B.TOTAL_SALES;
  • 참고해보니 서브쿼리 안쓰고 INNER JOIN으로도 가능한 것 같다.(더 간단하긴 한 듯...)

    🤔서브쿼리 X
    SELECT USER_ID , NICKNAME , SUM(PRICE) AS TOTAL_SALES 
    FROM USED_GOODS_BOARD board
    INNER JOIN USED_GOODS_USER user on board.WRITER_ID = user.USER_ID AND STATUS = 'DONE'
    GROUP BY USER_ID
    HAVING SUM(PRICE) >= 700000
    ORDER BY TOTAL_SALES
post-custom-banner

0개의 댓글