SQL/문제풀이

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

응엉잉 2024. 1. 2. 10:10

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

1. JOIN 사용하기

오프라인 상품 판매 정보 테이블에 상품 정보 테이블을 이어붙여서, 하나의 테이블을 통해 판매 정보와 상품 정보를 확인할 수 있도록 JOIN을 사용했다.

두 table 모두 product_id를 가지고 있으므로, 해당 column을 JOIN에 사용해주었다.

JOIN한 결과는 다음과 같다.

 

2. GROUP BY + 계산식 사용하기

문제에서는 상품 코드(product_code) 별 매출액을 구하길 원했기에, product_code로 GROUP BY 해주었다.

매출액을 구하기 위해서는 상품 코드별 판매량을 구해야 하므로, SUM(sales_amount)로 상품 코드별 판매량을 구했다.

계산값에 price를 곱하면 매출액을 구할 수 있다.

 

3. 정렬하기

이후 문제에서 원하는 정렬 방식을 ORDER BY로 작성해준다.

 

정답 코드는 다음과 같다.

SELECT p.product_code,
    SUM(s.sales_amount) * p.price AS sales
FROM offline_sale s
LEFT JOIN product p ON s.product_id = p.product_id
GROUP BY p.product_code
ORDER BY sales DESC,
    p.product_code