Doby's Lab

Programmers: 상품 별 오프라인 매출 구하기 (MySQL) 본문

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를 기준으로 PRODUCTOFFLINE_SALEJOIN한다. -> 이 시점을 하나의 테이블로 생각할 것

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

 

 

 

 

728x90