FireDrago
[SQL] 상품 별 오프라인 매출 구하기 본문
문제


풀이
처음생각한 풀이 과정은 다음과 같다.
1. OFFLINE_SALE 테이블에서 PRODUCT_ID , SUM(SALES_AMOUNT) 값을 조회한다.
2. 과정 1에서 조회한 결과를 조인하여 PRODUCT_CODE , PRICE * SUM(SALES_AMOUNT) 값을 조회한다.
WITH 문과 JOIN 을 활용했다.
with cte as(
select
PRODUCT_ID, sum(SALES_AMOUNT) as sum
from
OFFLINE_SALE
group by
PRODUCT_ID
)
select
PRODUCT_CODE, cte.sum * PRICE as SALES
from
PRODUCT
JOIN
cte
ON
cte.PRODUCT_ID = PRODUCT.PRODUCT_ID
order by
2 desc, PRODUCT_CODE
WITH 문은 재사용성과 가독성이 높다는 장점이 있지만,
쿼리가 두번 실행되어 불필요한 중간값이 생길 수 있다.
위 문제에서 WITH 문을 재사용하지 않으므로,
JOIN을 통해 한번에 원하는 데이터를 조회하는 것이 효율적이다.
select
p.PRODUCT_CODE,
sum(s.SALES_AMOUNT) * p.PRICE as SALES
from
PRODUCT as p
JOIN
OFFLINE_SALE as s
ON
p.PRODUCT_ID = s.PRODUCT_ID
group by
p.PRODUCT_ID
order by
2 desc, p.PRODUCT_CODE asc;
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
| [SQL] 상품을 구매한 회원 비율 구하기 (0) | 2024.09.26 |
|---|---|
| [SQL] 입양 시각 구하기(2) (0) | 2024.09.12 |
| [SQL] 업그레이드 할 수 없는 아이템 구하기 (0) | 2024.08.26 |
| [SQL] 즐겨찾기가 가장 많은 식당 정보 출력 (0) | 2024.08.21 |
| Lv0 - 치킨쿠폰 (0) | 2023.06.25 |
