# WITH๋ฌธ์ ์ธ์ ์ฌ์ฉํ ๊น?
์ค์ ์ค๋ฌด์์๋ ๋์ผํ SQL์ด ๋ฐ๋ณต๋์ด ์ฌ์ฉ๋๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค. ํ์ง๋ง ๊ทธ๋๋ง๋ค ๋์ผํ ์ฟผ๋ฆฌ๋ฅผ ์คํํ๊ฒ ๋๋ค๋ฉด, ํ๋ก๊ทธ๋จ ์ ์ฒด์ ์ผ๋ก ์ฑ๋ฅ์ด ๋๋ ค์ง๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค. ์ด๋ฌํ ์ํฉ์์ ๋ฐ๋ณต์ ์ธ ์ฌ์ฉ์ ๊ฐ๋ฅํ๊ฒ ํด์ฃผ๋ ๊ตฌ๋ฌธ์ด WITH ์ ์
๋๋ค. ์ฆ, ๊ฒ์์์ ์ฌ์ฉํ๋ ๋งคํฌ๋ก์ ๋ง์ฐฌ๊ฐ์ง๋ก ํ๋ฒ ์ง์ ํด ์ฃผ๋ฉด ์๋์ผ๋ก ๋ฐ๋ณตํ์ฌ ์คํ๋๋๋ก ํ ์ ์์ต๋๋ค.
# with ๋ฌธ์ ๊ธฐ๋ณธ๊ตฌ์กฐ
with new_table as
(
#๋ฐ๋ณต์ํฌ ์ฟผ๋ฆฌ
SELECT
)
WITH๋ฌธ
์ฐ์ ์ํ๋ก ์ฌ์ฉํ ๋ฐ์ดํฐ๋ฅผ MEMBER ํ ์ด๋ธ์์ ์กฐํํด ๋ณด๊ฒ ์ต๋๋ค. ์กฐํํ ํญ๋ชฉ์ ์ฑ๋ณ, ์ด๋ฆ, ๋์ด์ ๋๋ค.
SELECT gender
, name
, age
FROM MEMEBER;
| gender | name | age |
| MALE | ๋ฌธOO | 14 |
| FEMAIL | ์ฑOO | 24 |
| MALE | ์ OO | 25 |
| MALE | ๊นOO | 16 |
| FEMALE | ์ OO | 23 |
์ค์ ์ฟผ๋ฆฌ์ ์กฐ๊ฑด์ ๋ถ์ฌํ๊ณ , ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ์์ ํ ์ด๋ธ์ ์ ์ฅํด ๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
WITH ADULT AS
(
SELECT gender
, name
, age
FROM MEMBER
WHERE age > 19
)
SELECT gender
, name
, age
FROM ADULT
| gender | name | age |
| FEMAIL | ์ฑOO | 24 |
| MALE | ์ OO | 25 |
| FEMALE | ์ OO | 23 |
MEMBER ํ ์ด๋ธ์์ age๊ฐ 19๋ณด๋ค ๋์ ๋ฐ์ดํฐ๋ง์ ์ถ์ถํ์ฌ ADULT๋ผ๋ ์๋ก์ด ์์ํ ์ด๋ธ์ ์์ฑํ์์ต๋๋ค.
'Knowledge๐ฆข > SQL' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [SQL] NULL ์ฒ๋ฆฌ - ifnull, if์ ์ปฌ๋ผ is null, case๋ฌธ (0) | 2024.05.15 |
|---|---|
| [SQL] group by๋ฅผ ์ฌ์ฉํ๋ ์ด์ - group by, havingโ๏ธ (2) | 2024.05.15 |
| [SQL] SQL๋ฌธ์ ๋ฅผ ํ ๋ ์ค์ํ๋ค๊ณ ์๊ฐํ๋ ๊ฒ๋ค (0) | 2024.05.13 |
| [SQL] Cross Join - ํฌ๋ก์ค ์กฐ์ธ (0) | 2024.05.13 |
| [SQL] SELF JOIN (ไธ) : ๊ฐ์ ํ ์ด๋ธ์ ์กฐ์ธํ๊ธฐ (1) | 2024.05.07 |