-
<프로그래머스> 상품 별 오프라인 매출 구하기코딩테스트/SQL 코딩테스트 2023. 12. 19. 17:13
출처 : https://school.programmers.co.kr/learn/courses/30/lessons/131533
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
- 문제 요구사항
- 상품 코드 별 매출액(판매가*판매량) 합계를 출력하는 SQL문을 작성
- 결과는 매출액을 기준으로 내림차순 정렬
- 매출액이 같다면 상품코드를 기준으로 오름차순 정렬
PRODUCT과 OFLINE_SALE 테이블을 INNER_JOIN해야함
상품코드별 누적 판매량(AMOUNT)을 계산한 뒤에 거기에 판매가를 곱하기 위해서 FROM절에 서브쿼리를 사용함
상품코드를 기준으로 GROUP BY를 해서 누적 판매량을 계산한 서브쿼리를 하나의 테이블로 사용하여
불러온 누적 판매량에 해당하는 제품 가격을 곱해서 SALES를 계산함
1) Oracle
SELECT PRODUCT_CODE, TOTAL_AMOUNT * PRICE AS SALES FROM ( SELECT P.PRODUCT_CODE, P.PRICE, SUM(O.SALES_AMOUNT) AS TOTAL_AMOUNT FROM PRODUCT P INNER JOIN OFFLINE_SALE O ON P.PRODUCT_ID = O.PRODUCT_ID GROUP BY P.PRODUCT_CODE, P.PRICE ) A ORDER BY SALES DESC, PRODUCT_CODE;
Oracle의 경우 GROUP BY를 할 때 그룹을 지을 대상이 되는 칼럼 뿐만 아니라 집계함수가 사용되지 않은 다른 칼럼의 이름까지 적어주어야 오류가 나지않고 동작한다.
2) MySQL
SELECT PRODUCT_CODE, TOTAL_AMOUNT * PRICE AS SALES FROM ( SELECT P.PRODUCT_CODE, SUM(O.SALES_AMOUNT) AS TOTAL_AMOUNT, P.PRICE FROM PRODUCT P INNER JOIN OFFLINE_SALE O ON P.PRODUCT_ID = O.PRODUCT_ID GROUP BY P.PRODUCT_CODE ) A ORDER BY 2 DESC, 1
'코딩테스트 > SQL 코딩테스트' 카테고리의 다른 글
<프로그래머스> 오랜 기간 보호한 동물(2) (0) 2023.12.19 <프로그래머스> 있었는데요 없었습니다 (0) 2023.12.19 <프로그래머스> 카테고리 별 도서 판매량 집계하기 (0) 2023.12.19 <프로그래머스> 오랜 기간 보호한 동물(1) (0) 2023.12.19 <프로그래머스> 자동차 종류 별 특정 옵션이 포함된 자동차 수 구하기 (0) 2023.12.19 - 문제 요구사항