프로그래머스 - 상품 별 오프라인 매출 구하기

윤민선·2026년 7월 4일

프로그래머스

목록 보기
34/79

문제 설명

PRODUCT 테이블과 OFFLINE_SALE 테이블을 활용해 상품별 매출액(가격 × 판매량)의 합계를 매출액 내림차순, 상품코드 오름차순으로 조회하는 문제이다.

테이블주요 컬럼
PRODUCTPRODUCT_ID, PRODUCT_CODE, PRICE
OFFLINE_SALEPRODUCT_ID, SALES_AMOUNT, SALES_DATE

두 테이블 모두 PRODUCT_ID를 공통으로 갖고 있어서, 이걸 기준으로 연결할 수 있다.


접근 방법

문제를 읽고 아래처럼 흐름을 잡아보았다.

PRODUCT_ID를 공통 키로 JOIN해야 한다. PRICE(가격)PRODUCT 테이블에, SALES_AMOUNT(판매량)OFFLINE_SALE 테이블에 있기 때문에 두 테이블을 연결해야 매출액을 계산할 수 있다.

매출액은 가격 × 판매량이므로 P.PRICE * O.SALES_AMOUNT로 계산하고, 상품별 합계를 구해야 하므로 SUM()GROUP BY PRODUCT_CODE를 함께 사용하였다.

정렬 기준은 두 가지였다. 매출액 내림차순이 1순위, 상품코드 오름차순이 2순위이므로 ORDER BY SALES DESC, PRODUCT_CODE ASC로 표현하였다.

구체적으로 정리한 풀이 흐름:

  1. 공통 키 PRODUCT_ID 기준으로 JOIN
  2. P.PRICE * O.SALES_AMOUNT로 매출액 계산
  3. SUM()GROUP BY PRODUCT_CODE로 상품별 매출 합계
  4. ORDER BY SALES DESC, PRODUCT_CODE ASC로 정렬

최종 코드

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

풀고 나서

이 문제의 핵심은 JOIN + GROUP BY + SUM()을 조합하는 것 이었다.
JOIN으로 두 테이블을 연결하고, GROUP BY로 상품별로 묶은 뒤, SUM()으로 매출액을 집계한다.

SUM(P.PRICE * O.SALES_AMOUNT)처럼 집계함수 안에 계산식을 넣을 수 있다는 것도 챙겨야 할 포인트이다.

0개의 댓글