inblog logo
|
An's Blog
    코딩테스트SQL

    [코딩테스트] 44. 상품 별 오프라인 매출 구하기

    윤설안's avatar
    윤설안
    May 16, 2025
    [코딩테스트] 44. 상품 별 오프라인 매출 구하기
    Contents
    테이블 index문제예시풀이

    테이블 index

    📌

    PRODUCT

    Column name
    Type
    Nullable
    PRODUCT_ID
    INTEGER
    FALSE
    PRODUCT_CODE
    VARCHAR(8)
    FALSE
    PRICE
    INTEGER
    FALSE

    OFFLINE_SALE 

    Column name
    Type
    Nullable
    OFFLINE_SALE_ID
    INTEGER
    FALSE
    PRODUCT_ID
    INTEGER
    FALSE
    SALES_AMOUNT
    INTEGER
    FALSE
    SALES_DATE
    DATE
    FALSE

    문제

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

    예시

    notion image

    풀이

    ❗
    상품과 판매기록은 서로 다른 테이블이기에 가장 먼저 JOIN을 해주었다
    SELECT * from OFFLINE_SALE a inner join PRODUCT b on a.product_id = b.PRODUCT_ID
    PRODUCT_ID가 상품의 ID이기 때문에 group by 하여서 판매된 상품의 값을 구했다.
    SELECT *, sum(b.price) SALES from OFFLINE_SALE a inner join PRODUCT b on a.product_id = b.PRODUCT_ID group by a.PRODUCT_ID
    이후 필요한 column과 order by를 이용하여 정렬
    SELECT b.PRODUCT_CODE, sum(b.price) SALES from OFFLINE_SALE a inner join PRODUCT b on a.product_id = b.PRODUCT_ID group by a.PRODUCT_ID order by sales desc, PRODUCT_CODE
    하지만 오답. 이유는 위에 코드도 합산된 값이 나오지만, 문제에서 원하는 방식은 (판매가 * 판매량) 이였기 때문이다. 그래서 sum함수에서 2개의 column을 곱해주었다.
    SELECT b.PRODUCT_CODE, sum(b.price * SALES_AMOUNT) SALES from OFFLINE_SALE a inner join PRODUCT b on a.product_id = b.PRODUCT_ID group by a.PRODUCT_ID order by sales desc, PRODUCT_CODE
    Share article
    Contents
    테이블 index문제예시풀이

    An's Blog

    RSS·Powered by Inblog