코딩테스트/SQL 코딩테스트

<프로그래머스> 조건에 맞는 사용자와 총 거래금액 조회하기

배또가또 2023. 12. 20. 23:38

출처 : https://school.programmers.co.kr/learn/courses/30/lessons/164668

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 


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

 

우선 완료된 중고 거래 금액을 알기 위해서 두 개의 테이블을 INNER JOIN해야하는데 같은 이름을 가진 칼럼이 없다

BOARD(게시판)에는 WRITER_ID(글 작성자)가 있고 USER테이블에는 USER_ID가 있다 이 두 컬럼을 기준으로 조인을 진행한다. 


1) Oracle

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

 


2) MySQL

SELECT USER_ID, 
       NICKNAME, 
       TOTAL_SALES
FROM 
(
    SELECT U.USER_ID, 
           U.NICKNAME, 
           SUM(B.PRICE) AS TOTAL_SALES
    FROM USED_GOODS_BOARD B INNER JOIN USED_GOODS_USER U ON B.WRITER_ID = U.USER_ID
    WHERE STATUS = 'DONE'
    GROUP BY U.USER_ID
) A
WHERE TOTAL_SALES >= 700000
ORDER BY 3;