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

다음은 중고 거래 게시판 정보를 담은 USED_GOODS_BOARD 테이블과 중고 거래 게시판 첨부파일 정보를 담은 USED_GOODS_FILE 테이블입니다. USED_GOODS_BOARD 테이블은 다음과 같으며 BOARD_ID, WRITER_ID, TITLE, CONTENTS, PRICE, CREATED_DATE, STATUS, VIEWS는 게시글 ID, 작성자 ID, 게시글 제목, 게시글 내용, 가격, 작성일, 거래상태, 조회수를 의미합니다.

USED_GOODS_USER 테이블은 다음과 같으며 USER_ID, NICKNAME, CITY, STREET_ADDRESS1, STREET_ADDRESS2, TLNO는 각각 회원 ID, 닉네임, 시, 도로명 주소, 상세 주소, 전화번호를 를 의미합니다.

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

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

164668

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

해설

  • Name
    SELECT
    Type
    Description

    SUM(USED_GOODS_BOARD.PRICE) AS TOTAL_SALES는 USED_GOODS_BOARD 테이블에서 각 사용자의 게시물에 대한 가격을 합산하여 TOTAL_SALES라는 별칭으로 나타냅니다.

  • Name
    LEFT JOIN
    Type
    Description
    • USED_GOODS_BOARD 테이블을 USED_GOODS_USER 테이블에 LEFT JOIN 합니다. 이는 USED_GOODS_USER 테이블의 모든 사용자에 대한 정보와, 조건에 맞는 USED_GOODS_BOARD 테이블의 정보를 결합합니다.

    • ON USED_GOODS_BOARD.WRITER_ID = USED_GOODS_USER.USER_ID 조건은 USED_GOODS_BOARD의 WRITER_ID와 USED_GOODS_USER의 USER_ID가 일치하는 행에 대해서만 조인합니다.

  • Name
    WHERE
    Type
    Description

    USED_GOODS_BOARD.STATUS = 'DONE' 조건은 USED_GOODS_BOARD 테이블에서 거래 상태가 'DONE'인 행들만을 필터링합니다.

  • Name
    GROUP BY
    Type
    Description

    USED_GOODS_USER.USER_ID, USED_GOODS_USER.NICKNAME는 결과를 사용자 ID와 닉네임별로 그룹화합니다. 이는 SUM 함수와 함께 사용되어 각 사용자별로 총 판매액을 계산합니다.

  • Name
    HAVING
    Type
    Description

    HAVING TOTAL_SALES >= 700000은 그룹화된 결과 중에서 총 판매액이 700,000 이상인 그룹만을 필터링합니다.

  • Name
    ORDER BY
    Type
    Description

    TOTAL_SALES ASC는 총 판매액을 기준으로 결과를 오름차순으로 정렬합니다.

USED_GOODS_USER 테이블에 있는 사용자 중에서 USED_GOODS_BOARD 테이블의 STATUS가 'DONE'인 게시물의 가격을 합산하여 총 판매 금액이 700,000 이상인 사용자의 ID, 닉네임, 그리고 총 판매 금액을 오름차순으로 나열합니다.

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

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