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

편준민's avatar
May 16, 2025
[코딩테스트] 44. 상품 별 오프라인 매출 구하기

테이블 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
이후 필요한 columnorder 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

YunSeolAn