상품 별 오프라인 매출 구하기

다음은 어느 의류 쇼핑몰에서 판매중인 상품들의 상품 정보를 담은 PRODUCT 테이블과 오프라인 상품 판매 정보를 담은 OFFLINE_SALE 테이블 입니다. PRODUCT 테이블은 아래와 같은 구조로 PRODUCT_ID, PRODUCT_CODE, PRICE는 각각 상품 ID, 상품코드, 판매가를 나타냅니다.

상품 별로 중복되지 않는 8자리 상품코드 값을 가지며, 앞 2자리는 카테고리 코드를 의미합니다.

OFFLINE_SALE 테이블은 아래와 같은 구조로 되어있으며 OFFLINE_SALE_ID, PRODUCT_ID, SALES_AMOUNT, SALES_DATE는 각각 오프라인 상품 판매 ID, 상품 ID, 판매량, 판매일을 나타냅니다.

동일한 날짜, 상품 ID 조합에 대해서는 하나의 판매 데이터만 존재합니다.

PRODUCT 테이블과 OFFLINE_SALE 테이블에서 상품코드 별 매출액(판매가 * 판매량) 합계를 출력하는 SQL문을 작성해주세요. 결과는 매출액을 기준으로 내림차순 정렬해주시고 매출액이 같다면 상품코드를 기준으로 오름차순 정렬해주세요.

상품 별 오프라인 매출 구하기Lv.2

131533

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

해설

PRODUCT 테이블과 OFFLINE_SALE 테이블을 조인하여 각 제품 코드(PRODUCT_CODE)별로 총 판매액을 계산하고, 결과를 특정 순서로 정렬합니다.

  • Name
    SELECT 절
    Type
    Description

    SELECT 절에서는 SUM 부분을 주의하면 됩니다. 문제 요구사항에 맞춰서 판매 갯수 곱하기 가격을 해야합니다.

    SUM(OFFLINE_SALE.SALES_AMOUNT * PRODUCT.PRICE) AS SALES

  • Name
    LEFT JOIN
    Type
    Description

    LEFT JOIN OFFLINE_SALE ON PRODUCT.PRODUCT_ID = OFFLINE_SALE.PRODUCT_ID: PRODUCT 테이블과 OFFLINE_SALE 테이블을 PRODUCT_ID를 기준으로 왼쪽 조인합니다. 이는 PRODUCT 테이블의 모든 행을 포함하고, OFFLINE_SALE 테이블에서 해당하는 PRODUCT_ID가 있는 행만 조인합니다.

  • Name
    GROUP BY 절
    Type
    Description

    GROUP BY PRODUCT.PRODUCT_CODE: 결과를 PRODUCT_CODE별로 그룹화합니다. 이는 각 제품 코드에 대한 총 판매액을 개별적으로 계산하기 위함입니다.

  • Name
    ORDER BY 절
    Type
    Description

    ORDER BY SALES DESC, PRODUCT_CODE ASC: 결과를 SALES의 내림차순으로 정렬하고, SALES가 같은 경우 PRODUCT_CODE의 오름차순으로 정렬합니다. 이는 가장 높은 판매액을 가진 제품부터 표시하되, 같은 판매액을 가진 제품은 제품 코드 순으로 표시하게 합니다.

상품 별 오프라인 매출 구하기

SELECT
    PRODUCT.PRODUCT_CODE,
    SUM(OFFLINE_SALE.SALES_AMOUNT * PRODUCT.PRICE) AS SALES
FROM
    PRODUCT
    LEFT JOIN OFFLINE_SALE ON PRODUCT.PRODUCT_ID = OFFLINE_SALE.PRODUCT_ID
GROUP BY
    PRODUCT.PRODUCT_CODE
ORDER BY
    SALES DESC, PRODUCT_CODE ASC;