๐ข ๋ณธ ํฌ์คํ ์ Growth/Practice ๊ฒ์๊ธ (https://sy038680.tistory.com/235) ๋ฌธ์ ์ ๋ํ 2์ฐจ ํ์ด์ ๋๋ค.
๊ธฐ์กด ํ์ด๋ WITH์ ์ ์ด์ฉํด์ ํ์๋๋ฐ WITH์ ์ ์ด์ฉํ ํ์๊ฐ ์๋ ๋ฌธ์ ์๋ค.
ํ์ด์ค LEFT JOIN์ ์ฌ์ฉํ๋๋ PRODUCT ํ ์ด๋ธ์์ ์คํ๋ผ์ธ ํ๋งค์ ๋ณด๊ฐ ์๋ ์ํ๋ค์ ๋ํด ์ปฌ๋ผ๊ฐ Null๋ก ๋ฐ์ดํฐ๊ฐ ์ถ๋ ฅ๋๋ ๊ฒ์ ๋ฐ๊ฒฌํ๋ค.
์ด๋ฅผ ์ ์ธํ๊ธฐ ์ํด INNER JOIN์ ์ฌ์ฉํ๊ณ
๋งค์ถ์ก = ( ํ๋งค๊ฐ x ํ๋งค๋ )
๊ฐ๊ฒฉ x ์ด ํ๋งค์๋
๋ฅผ PRODUCT_CODE๋ณ๋ก GROUPINGํ๊ณ ์ง๊ณํจ์๋ฅผ ์ฌ์ฉํด์ ์ถ๋ ฅํด์ฃผ์๋ค.
SELECT PD.PRODUCT_CODE,
PD.PRICE * SUM(OS.SALES_AMOUNT) AS SALES
FROM PRODUCT PD
INNER JOIN OFFLINE_SALE OS
ON PD.PRODUCT_ID = OS.PRODUCT_ID
GROUP BY 1
ORDER BY 2 DESC, 1;
<๊ธฐ์กดํ์ด>
WITH T1 AS
(SELECT PD.PRODUCT_CODE AS PRODUCT_CODE,
SUM(SALES_AMOUNT) AS SALES_AMOUNT,
PD. PRICE AS PRICE
FROM PRODUCT PD
INNER JOIN OFFLINE_SALE OS
ON PD.PRODUCT_ID = OS.PRODUCT_ID
GROUP BY PD.PRODUCT_CODE)
SELECT T1.PRODUCT_CODE AS PRODUCT_CODE,
T1.SALES_AMOUNT * T1.PRICE AS SALES
FROM T1
ORDER BY 2 DESC, 1;