프로그래머스/MySQL
[프로그래머스] 상품 별 오프라인 매출 구하기 - MySQL - 우당탕탕 개발자 되기 프로젝트
우당탕탕 개발자
2024. 9. 30. 16:33
728x90
반응형
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
1. 문제 설명
반응형
2. 풀이과정
해당 문제는 상품코드 별 매출액(판매가 * 판매량) 합계를 조회하는 문제이다.
문제에서는 상품 정보를 담은 PRODUCT 테이블과 오프라인 상품 판매 정보를 담은 OFFLINE_SALE 테이블이 주어진다.
오프라인 상품 판매 정보 테이블의 상품 ID를 보고 상품 정보 테이블에서 가격 정보를 가져와 매출액을 구해야 한다.
이렇게 서로 다른 테이블에서 데이터를 가져올 때는 JOIN을 활용해 두 테이블의 정보를 하나로 합쳐야 한다.
상품 정보 테이블과 오프라인 상품 판매 정보 테이블에서 겹치는 공통 컬럼은 상품 ID 컬럼이다.
상품 ID 컬럼을 기준으로 JOIN 해주면 된다.
JOIN 이후 상품코드 별 매출액 합계를 구해야 하므로 상품 정보 테이블의 상품코드를 기준으로 그룹을 만들어준다.
매출액은 그룹으로 나눈 상품코드 별 상품 정보 테이블의 판매가 컬럼과 오프라인 상품 판매 정보 테이블의 판매량의 합을 곱하여 구하면 된다.
최종 결과는 매출액을 기준으로 내림차순 정렬하고, 매출액이 같다면 상품코드를 기준으로 오름차순 정렬하여 조회한다.
- 상품코드와 상품코드 별 매출액을 조회한다. 상품코드 별 매출액은 판매가와 판매량의 합계를 곱하여 구한다. SELECT PRODUCT_CODE, (P.PRICE * SUM(O.SALES_AMOUNT)) AS SALES
- 상품 정보 테이블을 P로 지정하고 FROM PRODUCT AS P
- 오프라인 상품 판매 정보 테이블을 O로 지정한 뒤, 두 테이블의 공통 컬럼인 상품 ID 컬럼을 기준으로 JOIN 하여 하나의 테이블로 합쳐준다. JOIN OFFLINE_SALE AS O ON P.PRODUCT_ID = O.PRODUCT_ID
- 상품코드 별 매출액 합계를 구해야 하므로 상품 정보 테이블의 상품코드를 기준으로 그룹을 만들어준다. GROUP BY P.PRODUCT_CODE
- 최종 결과는 매출액을 기준으로 내림차순 정렬하고, 매출액이 같다면 상품코드를 기준으로 오름차순 정렬하여 조회한다. ORDER BY SALES DESC, P.PRODUCT_CODE
728x90
3. 소스코드
SELECT PRODUCT_CODE, (P.PRICE * SUM(O.SALES_AMOUNT)) AS SALES
FROM PRODUCT AS P
JOIN OFFLINE_SALE AS O ON P.PRODUCT_ID = O.PRODUCT_ID
GROUP BY P.PRODUCT_CODE
ORDER BY SALES DESC, P.PRODUCT_CODE
728x90
반응형