Data Engineering/SQL
Programmers: 상품 별 오프라인 매출 구하기 (MySQL)
도비(Doby)
2023. 9. 3. 03:25
https://school.programmers.co.kr/learn/courses/30/lessons/131533
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
Level 2
10문제 중 가장 어려운 문제였습니다. GROUP BY
에 대해 쉽게 이해가 가지 않다 보니 어렵게 풀었는데 이에 대해 잘 이해할 수 있도록 하는 자료를 아래에 첨부했습니다.
[순서도]
1. PRODUCT_ID
를 기준으로 PRODUCT
와 OFFLINE_SALE
을 JOIN
한다. -> 이 시점을 하나의 테이블로 생각할 것
2. 그랬을 때, PRODUCT_CODE
를 기준으로 그룹핑하여 SUM(O.SALES_AMOUNT)
을 구한다면 해당 PRODUCT_CODE
에 대한 물품의 총개수를 알 수 있다.
3. 이를 P.PRICE
과 곱하여 SALES
라는 필드를 구할 수 있다.
하나의 테이블에 대한 GROUP BY
였다면, 조금 쉽게 접할 수 있었겠지만, JOIN
을 통해 두 테이블에 대한 GROUP BY
를 진행해야 했기에 조금 어렵게 다가왔던 거 같습니다. 하나의 테이블로 합친 후, GROUP BY
라는 순서도같이 절차를 나누어 생각한다면, 풀 수 있는 문제입니다.
Ref. <GROUP BY
에 대해 간략히 설명이 잘 되어있던 글>
https://needneo.tistory.com/233
SELECT P.PRODUCT_CODE,
SUM(O.SALES_AMOUNT) * P.PRICE AS SALES
FROM PRODUCT AS P
JOIN OFFLINE_SALE O
ON P.PRODUCT_ID = O.PRODUCT_ID
GROUP BY P.PRODUCT_CODE
ORDER BY SALES DESC, P.PRODUCT_CODE