728x90
반응형
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
반응형
'프로그래머스 > MySQL' 카테고리의 다른 글
[프로그래머스] 가격대 별 상품 개수 구하기 - MySQL - 우당탕탕 개발자 되기 프로젝트 (0) | 2024.10.06 |
---|---|
[프로그래머스] 3월에 태어난 여성 회원 목록 출력하기 - MySQL - 우당탕탕 개발자 되기 프로젝트 (0) | 2024.10.04 |
[프로그래머스] 루시와 엘라 찾기 - MySQL - 우당탕탕 개발자 되기 프로젝트 (0) | 2024.10.03 |
[프로그래머스] 성분으로 구분한 아이스크림 총 주문량 - MySQL - 우당탕탕 개발자 되기 프로젝트 (0) | 2024.10.02 |
[프로그래머스] 조건에 맞는 도서와 저자 리스트 출력하기 - MySQL - 우당탕탕 개발자 되기 프로젝트 (0) | 2024.09.29 |
[프로그래머스] 자동차 종류 별 특정 옵션이 포함된 자동차 수 구하기 - MySQL - 우당탕탕 개발자 되기 프로젝트 (0) | 2024.09.28 |
[프로그래머스] 입양 시각 구하기(1) - MySQL - 우당탕탕 개발자 되기 프로젝트 (2) | 2024.09.27 |
[프로그래머스] 중성화 여부 파악하기 - MySQL - 우당탕탕 개발자 되기 프로젝트 (0) | 2024.09.25 |