WITH ์ ์ CTE(Common Table Expression)๋ฅผ ์ ์ํ๋ ๋ฐ ์ฌ์ฉ๋๋ค. ์ด๋ ์ฟผ๋ฆฌ ๋ด์์ ์ผ์์ ์ธ ๊ฒฐ๊ณผ ์งํฉ์ ์์ฑํ์ฌ ์ฝ๋์ ๊ฐ๋ ์ฑ์ ๋์ด๊ณ , ๋ฐ๋ณต ๊ณ์ฐ์ ํผํ๋๋ก ํ๋ค. WITH ๊ตฌ๋ฌธ์ ํนํ ๋ณต์กํ ์ฟผ๋ฆฌ๋ ์ฌ๋ฌ ๋ฒ ์ค์ฒฉ๋ ์๋ธ์ฟผ๋ฆฌ๋ฅผ ์์ฑํ ๋ ์ ์ฉํ๋ค.
ํน์ ๊ธฐ๊ฐ ๋์์ ๋งค์ถ ๋ฐ์ดํฐ๋ฅผ ์กฐํํ๋ ๊ฒฝ์ฐ, WITH ์ ์ ์ฌ์ฉํด ๋งค์ถ ์ ๋ณด๋ฅผ ์์ ํ ์ด๋ธ์ฒ๋ผ ์ฌ์ฉํ ์ ์๋ค.
WITH sales_summary AS (
SELECT
product_id,
SUM(sales_amount) AS total_sales,
COUNT(*) AS sales_count
FROM
sales
WHERE
sales_date BETWEEN '2023-01-01' AND '2023-12-31'
GROUP BY
product_id
)
SELECT
p.product_name,
ss.total_sales,
ss.sales_count
FROM
products p
JOIN
sales_summary ss ON p.product_id = ss.product_id
ORDER BY
ss.total_sales DESC;
์ ์์์์ sales_summary๋ WITH ์ ์ ์ฌ์ฉํ์ฌ ์์ฑ๋ ์์ ํ ์ด๋ธ์ด๋ค. ์ด ์์ ํ ์ด๋ธ์๋ ํน์ ๊ธฐ๊ฐ ๋์์ ๋งค์ถ ๋ฐ์ดํฐ๊ฐ ํฌํจ๋์ด ์์ผ๋ฉฐ, ์ดํ products ํ ์ด๋ธ๊ณผ ์กฐ์ธํ์ฌ ๊ฐ ์ ํ์ ๋งค์ถ ์์ฝ ์ ๋ณด๋ฅผ ์กฐํํ ์ ์๋ค.