[SQLD] Chapter4 SQL ํ์ฉ(SQLD)
Categories: Database
๐ ๊ฐ์ธ์ ์ธ ๊ณต๊ฐ์ผ๋ก ๊ณต๋ถ๋ฅผ ๊ธฐ๋กํ๊ณ ๋ณต์ตํ๊ธฐ ์ํด ์ฌ์ฉํ๋ ๋ธ๋ก๊ทธ์
๋๋ค.
์ ํํ์ง ์์ ์ ๋ณด๊ฐ ์์ ์ ์์ผ๋ ์ฐธ๊ณ ๋ฐ๋๋๋ค :๐ธ
[ํ๋ฆฐ ๋ด์ฉ์ ๋๊ธ๋ก ๋จ๊ฒจ์ฃผ์๋ฉด ๋ณต๋ฐ์ผ์ค๊ฑฐ์์]
Chapter4 SQL ํ์ฉ
์๋ธ์ฟผ๋ฆฌ
์๋ธ์ฟผ๋ฆฌ
SQL ๋ฌธ์์ ํจ์๊ฐ ๋ค์ด๊ฐ ์ ์๋ ์์น์ ๋ ๋ค๋ฅธ ๋ ๋ฆฝ์ ์ธ SQL ๋ฌธ์ ๋ฃ๋ ๊ฒ์ด ๊ฐ๋ฅํ๋ฉฐ ์ด๋ฅผ ์๋ธ ์ฟผ๋ฆฌ๋ผ๊ณ ํ๋ค.
-
์๋ธ์ฟผ๋ฆฌ ์์น์ ๋ฐ๋ฅธ ๋ถ๋ฅ
์ข ๋ฅ ์๋ธ์ฟผ๋ฆฌ๊ฐ ๋ค์ด๊ฐ๋ ์์น ํน์ง ์ค์นผ๋ผ ์๋ธ์ฟผ๋ฆฌ SELECT ๋ฌธ์ ์ปฌ๋ผ ์ ๋ ฅ ์์น ๋ฐํ์ ํ๋์ ์ปฌ๋ผ๋ง ๊ฐ์ ธ์ผ ํ๋ค. ์ธ๋ผ์ธ ๋ทฐ FROM ์ ์ ํ ์ด๋ธ ์ ๋ ฅ ์์น ๋ณต์กํ ์ฟผ๋ฆฌ๋ฅผ ๋จ๊ณ์ ์ผ๋ก ์ฌ์ฉ ๊ฐ๋ฅ, ํ ์ด๋ธ์ ์ผ๋ถ๋ถ๋ง ๋ถ๋ฌ์ ๋น๊ตํ์๋ฅผ ์ค์ผ ์ ์๋ค. ย ย ์ค์ฒฉ ์๋ธ์ฟผ๋ฆฌ WHERE, HAVING ์ ์ ์ปฌ๋ผ ๋๋ ํ ์ด๋ธ ์ ๋ ฅ ์์น ๋ค์ํ ๋ฐํ๊ฐ์ ๊ฐ์ง ์ ์๋ค. -
์ค์ฒฉ ์๋ธ์ฟผ๋ฆฌ์ ๋ฐํ ๊ฐ ์ ํ
๋ฐํ ๊ฐ ์ ํ ์ค๋ช ๋จ์ผํ ๋ฐํ๋๋ ๊ฐ์ด ๋จ์ผํ, ๋จ์ผํ ๋น๊ต์ฐ์ฐ์์ ์ฐ์ฐ๋์์ผ๋ก ์ฌ์ฉํ ์ ์๋ค. ๋ค์คํ ๋ฐํ๋๋ ๊ฐ์ด ๋ค์ค ํ, ๋น๊ต์ฐ์ฐ์์ ์ฐ์ฐ ๋์์ผ๋ก ์ฌ์ฉ ๊ฐ๋ฅ ๋ค์ค์ปฌ๋ผ ๋ฐํ๋๋ ๊ฐ์ด ์ฌ๋ฌ ์ปฌ๋ผ ์ฆ ๋ฒกํฐ์ธ ๊ฒฝ์ฐ , ์ค์นผ๋ผ ์๋ธ์ฟผ๋ฆฌ์ ๋ฌ๋ฆฌ ๋ฐํ ๊ฐ์ด ์ฌ๋ฌ ์ปฌ๋ผ์ ๊ฐ์ง ํ ์ด๋ธ ํํ
-
-
๋ฉ์ธ์ฟผ๋ฆฌ์ ์นผ๋ผ ์ฌ์ฉ ์ฌ๋ถ์ ๋ฐ๋ผ ๋๋๋ค.
์ข ๋ฅ ์ค๋ช ์ฐ๊ด ์๋ธ์ฟผ๋ฆฌ ๋ฉ์ธ์ฟผ๋ฆฌ์ ์นผ๋ผ์ ์๋ธ์ฟผ๋ฆฌ์์ ์ฌ์ฉ ๋น์ฐ๊ด ์๋ธ์ฟผ๋ฆฌ ๋ฉ์ธ์ฟผ๋ฆฌ์ ์นผ๋ผ์ ์๋ธ์ฟผ๋ฆฌ์์ ์ฌ์ฉํ์ง ์์ -
์๋ธ์ฟผ๋ฆฌ ํน์ง
- ์๋ธ์ฟผ๋ฆฌ์์๋ ๋ฉ์ธ์ฟผ๋ฆฌ์ ์ปฌ๋ผ์ ๋ชจ๋ ์ฌ์ฉํ ์ ์๋ค.
- ๋ฉ์ธ์ฟผ๋ฆฌ์์๋ ์๋ธ์ฟผ๋ฆฌ์ ์ปฌ๋ผ์ ์ฌ์ฉํ ์ ์๋ค.
- ์๋ธ์ฟผ๋ฆฌ๋ ๊ดํธ๋ก ๊ฐ์ธ์ ์ฌ์ฉํ๋ค.
- ์๋ธ์ฟผ๋ฆฌ์์๋ ORDER BY ์ ์ ์ฌ์ฉํ ์ ์๋ค.
๋ทฐ
์ธ๋ผ์ธ ๋ทฐ์ ๊ฒฝ์ฐ ๋ฐํ๊ฒฐ๊ณผ๊ฐ ํ๋์ ํ ์ด๋ธ์ด ๋๋ค๊ณ ํ๋๋ฐ ํน๋ณํ ์ด๋ฆ์ด ์๊ณ ๋ฉ์ธ์ฟผ๋ฆฌ ์์ SELECT ๋ฌธ์ ํํ๋ก ๋ค์ด๊ฐ๋๋ฐ ์์ ๋ณ๋๋ก ์ด๋ฆ์ ๋ถ์ฌ์ DBMS์ ๋ฑ๋กํด๋๊ณ ๋ง์น ํ ์ด๋ธ์ ์ฐธ์กฐํ๋ ๊ฒ๊ณผ ๊ฐ์ด ์ฌ์ฉํ ์ ์๋๋ก ๋ง๋ ๊ฒ์ ๋ทฐ๋ผ๊ณ ํ๋ค.
-
ํ ์ด๋ธ๊ณผ ๋ทฐ
๊ตฌ๋ถ ํ ์ด๋ธ ๋ทฐ ๊ฐ๋ ์ ์๋ ์คํค๋ง์ ๋ฐ๋ผ ์ค์ ๋ฐ์ดํฐ๋ฅผ ๋ฌผ๋ฆฌ์ ์ผ๋ก ์์ฑ ์ค์ ์ ํ ์ด๋ธ์ ์ฐธ์กฐํ์ฌ ์์ฑํ๋ ๋ ผ๋ฆฌ์ ์ธ ๊ฐ์์ ํ ์ด๋ธ ๋ฐ์ดํฐ ์ ์ฅ ์ค์ ๋ฐ์ดํฐ๋ฅผ ๋์คํฌ์ ์ ์ฅ ์ค์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ ์์ง ์์ ์์ฑ ๋ฐฉ์ ์ ์ ์ผ๋ก ์์ฑ ๋์ ์ผ๋ก ์์ฑ ์ธ๋ฑ์ค ์์ฑ ์์ ๋ง์ ์ธ๋ฑ์ค ์์ฑ ๊ฐ๋ฅ ์์ ๋ง์ ์ธ๋ฑ์ค ์์ฑ ๋ถ๊ฐ๋ฅ ์ฝ์ /์์ /์ญ์ ์ ์ฝ ์์ ์ ์ฝ ์์ -
๋ทฐ์ ํน์ง
ํน์ง ์ค๋ช ํธ๋ฆฌ์ฑ ๋ณต์กํ๊ณ ๊ธด ์ฟผ๋ฆฌ๋ฅผ ๋ทฐ๋ก ๋ง๋ค์ด ๋๊ณ ์ฌ์ฉํ๋ฉด ์ฟผ๋ฆฌ๋ฅผ ๋จ์ํ๊ฒ ์์ฑํ ์ ์๋ค. ๋ณด์์ฑ ์๋์ ํ ์ด๋ธ์์ ์ธ๋ถ์ ๋ ธ์ถํ๋ฉฐ ์๋๋ ์ปฌ๋ผ์ ์ ์ธํ๊ณ ๋ทฐ๋ฅผ ์์ฑํ์ฌ ์ ๊ณตํ ์ ์๋ค. ๋ ๋ฆฝ์ฑ ํ ์ด๋ธ์ ๊ตฌ์กฐ๊ฐ ๋ณ๊ฒฝ๋๋๋ผ๋ ๋ทฐ๊ฐ ๋ณ๊ฒฝ๋์ง ์๋๋ค๋ฉด ๋ทฐ๋ฅผ ํตํด ์ ๊ทผํ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ณ๊ฒฝํ ํ์๊ฐ ์๋ค.
์งํฉ์ฐ์ฐ์
ํน์ ํ ๊ธฐ์ค ํค ์์ด ๋ ํ ์ด๋ธ์ ๋ ์ฝ๋๋ค์ ๋ํด์ ํฉ์งํฉ๊ณผ ๊ต์งํฉ ์ฐ์ฐ์ ์ํํ๋ฏ๋ก ๋ ํ ์ด๋ธ ์นผ๋ผ ๊ตฌ์ฑ, ์ฆ ์คํค๋ง๊ฐ ๋์ผํด์ผ ํ๋ค.
UNION ALL/ UNION
- UNION: ์คํค๋ง๊ฐ ๊ฐ์ ๋ ๊ฐ์ ํ ์ด๋ธ์ ๋ํ ํฉ์งํฉ, ์ค๋ณต๋ ๊ฐ์๋ฅผ ํ ๋ฒ๋ง ํฌํจ
- UNIONALL : ์ค๋ณต๋ ๊ฐ์๋งํผ ํฌํจ
INTERSECT
๊ต์งํฉ, ๋ ํ ์ด๋ธ์ ๊ณตํต์ ์ผ๋ก ํฌํจ๋ ๋ ์ฝ๋๋ง ํฌํจ
MINUS/EXCEPT
์ฐจ์งํฉ ์ํ, ๋ํ ์ด๋ธ์์ ๊ณตํต์ผ๋ก ํฌํจ๋ ๋ ์ฝ๋๋ฅผ ์ ์ธ์ํจ ๊ฒฐ๊ณผ
๊ทธ๋ฃนํจ์
GROUP BY์ ์ ๋ฐ๋ฅธ ๊ฒฐ๊ณผ์ ๋ํด์ ๊ทธ๋ฃน ๋ณ๋ก ์ฐ์ฐ์ ์ํํ๋ ํจ์
ROLLUP
GROUP BY์ ์ ๋ค์ด๊ฐ๋ ์ปฌ๋ผ์ ๋์์ผ๋ก ํ์ ๊ทธ๋ฃนํ์ ์ํํ๋ ํจ์
์๋ฅผ ๋ค์ด GROUP BY ROLLUP (๋ ์ง)์ ํ ๊ฒฝ์ฐ ๋ ์ง๋ฅผ ๋จผ์ ๊ทธ๋ฃนํํ๊ณ
GROUP BY ROLLUP (๋ ์ง, ์ด๋ฆ)์ ํ ๊ฒฝ์ฐ (๋ ์ง, ์ด๋ฆ) โ (๋ ์ง) โ (์ ์ฒด) ์์ผ๋ก ๋ฌถ์ด์ค๋ค.
CUBE
ROLL UP ๊ณผ ๋น์ทํ์ง๋ง ROLL UP์ด 1์ฐจ์ ์ธ ํ์ ๊ทธ๋ฃนํ ์ํํ๋๋ฐ ๋ฐํ์ฌ ์กฐํฉ ๊ฐ๋ฅํ ๋ชจ๋ ๊ฒฝ์ฐ๋ก ๊ทธ๋ฃนํ์ ์ํํ๋ค.
์๋ฅผ ๋ค์ด GROUP BY CUBE(๋ ์ง, ์ด๋ฆ)์ ๊ฒฝ์ฐ (๋ ์ง, ์ด๋ฆ) โ (๋ ์ง) โ (์ด๋ฆ) โ (์ ์ฒด) ์์๋ก ํ์ ๊ทธ๋ฃน์ ๋ฌถ์ด์ค๋ค.
GROUPING SETS
๊ทธ๋ฃนํ ํ ๋์์ ์ง์ ํ๋ ํจ์, ์ ๋ ฅ๋ ์ธ์์ ๋ํด์๋ง ์๊ณ๋ฅผ ๊ตฌํ ๋ ์ฌ์ฉํ๋ค.
GROUPING
ROLLUP, CUBE, GROUPING SETS๊ณผ ํจ๊ป ์ฌ์ฉํ์ฌ ์๊ณ์ ํด๋นํ๋ ๊ฒฐ๊ณผ ํ๊ณผ ๊ทธ๋ ์ง ์์ ํ์ ๊ตฌ๋ถํ ์ ์๋๋ก ํด์ค๋ค. ์๊ณ์ ํด๋นํ๋ ๊ฒฐ๊ณผ ํ์ ๊ฒฝ์ฐ 1์ ๋ฐํํ๊ณ ๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ 0์ ๋ฐํํ๋ค.
GROUPING ํจ์์ CASE ๋ฌธ์ ์ฌ์ฉํ์ฌ ์๊ณ๋ ์ด๊ณ๋ฅผ ํ์ํ๋ ํ์ ๋ํด์ ๊ทธ ์๋ฏธ์ ๋ง๋ ํ ์คํธ๋ฅผ ๊ฐ์ผ๋ก ์ง์ ํ ์ ์๋ค.
1
2
3
4
SELECT
CASE GROUPING ์
์ฌ์ฐ๋
WHEN 1 THEN '์๊ณ' ELSE TO_CHAR ์
์ฌ์ฐ๋
END AS ์ฐ๋
์๋์ฐํจ์
ํ๊ณผ ํ ๊ฐ์ ๊ด๊ณ๋ฅผ ๋ํ๋ด๋ ์ฐ์ฐ์ ์ฝ๊ฒ ํ๊ธฐ ์ํ ํจ์
GROUP BY ์ฐ์ฐ๊ณผ ์ ์ฌํ์ง๋ง GROUP BY ์ฐ์ฐ์ ๊ฐ ํ์ ๋์์ผ๋ก ์ฐ์ฐ์ ์ํํ ๋ค์ ์๋ก์ด ๊ตฌ์ฑ์ ๋ง๋๋๋ฐ ๋นํ์ฌ, ์๋์ฐ ํจ์๋ ๊ฐ ํ์ ๊ธฐ์กด ๊ตฌ์ฑ์ ์ ์งํ ์ํ๋ก ํด๋น ํ์ ๋ํด์ ์๋ก์ด ๊ฐ์ ์ถ๊ฐํ๊ฑฐ๋ ์๋๋ฉด ๊ธฐ์กด์ ๊ฐ์ ๋ณ๊ฒฝํ๋ค๋ ์ ์์ ๋ค๋ฅด๋ค.
์์ ํจ์
ํจ์์ด๋ฆ | ์ค๋ช | ์ |
---|---|---|
RANK | ๋์ผ ์์๋ ๊ฐ์ ์์๋ฅผ ๊ฐ์ง๋ค. ์์ ๊ฐ์ ์ ์์๊น์ง์ ๋์ ๊ฐ์ +1์ด ๋๋ค. | 1, 2, 2, 4, 4, 4, 7, โฆ |
DENSE_RANK | ๋์ผ ์์๋ ๊ฐ์ ์์ ๊ฐ์ ๊ฐ์ง๋ค. ์์๊ฐ์ ๋จ์ํ๊ฒ ์ ์์ +1 ์ด๋ค. | 1, 2, 2, 3, 3, 3, 4, โฆ |
ROW_NUMBER | ๋์ผ ์์๋ผ๋ ๊ฐ๊ฐ์ ํ์ด ๊ณ ์ ํ ์์๊ฐ์ ๊ฐ์ง๋ค. | 1, 2, 3, 4, 5, 6, 7, โฆ |
์ง๊ณ ํจ์
OVER์ ์ ์ฌ์ฉํด์ ํํฐ์ ๋ณ๋ก ์ง๊ณํ๊ฑฐ๋ ๋์ ์ง๊ณ๋ฅผ ๊ณ์ฐํ ์ ์๋ค.
ํจ์ ์ด๋ฆ | ์ค๋ช |
---|---|
COUNT | ๊ฐ์ด Null ์ธ ํ์ ์ ์ธํ ํ์ ๊ฐ์๋ก ํํฐ์ ๋ณ๋ก ์ง๊ณํ๊ฑฐ๋ ๋์ ์ง๊ณ๋ฅผ ๊ณ์ฐํ์ฌ ๋ฐํํ๋ค. |
SUM | ์ ๋ ฅ๋ ์ปฌ๋ผ์ ๋ํด ํํฐ์ ๋ณ ํฉ๊ณ๋ฅผ ๊ตฌํ๊ฑฐ๋ ๋์ ํฉ๊ณ๋ฅผ ๊ณ์ฐํ์ฌ ๋ฐํํ๋ค. |
AVG | ์ ๋ ฅ๋ ์ปฌ๋ผ์ ๋ํด ํํฐ์ ๋ณ ํ๊ท ์ ๊ตฌํ๊ฑฐ๋ ๋์ ํ๊ท ์ ๊ณ๋ํ์ฌ ๋ฐํํ๋ค. |
MIN | ์ ๋ ฅ๋ ์ปฌ๋ผ์ ๋ํด ํํฐ์ ๋ณ ์ต์๊ฐ์ ๋ฐํํ๋ค. |
MAX | ์ ๋ ฅ๋ ์ปฌ๋ผ์ ๋ํด ํํฐ์ ๋ณ ์ต๋๊ฐ์ ๋ฐํํ๋ค. |
ํ์์ํจ์
ํจ์ | ์ค๋ช |
---|---|
FIRST_VALUE | ํํฐ์ ๋ณ๋ก ๊ทธ๋ฃนํ ํ์ฌ ๊ฐ์ฅ ์ฒ์ ๊ฐ์ ๋ฐํํ๋ค. |
LAST_VALUE | ํํฐ์ ๋ณ๋ก ๊ทธ๋ฃนํ ํ์ฌ ๊ฐ์ฅ ๋ง์ง๋ง ๊ฐ์ ๋ฐํํ๋ค. |
LAG | ์ ๋ ฅ๋ ์ธ์์ ๊ฐ๋งํผ ์ด์ ํ์ ๊ฐ์ ๋ฐํํ๋ค. |
LEAD | ์ ๋ ฅ๋ ์ธ์์ ๊ฐ๋งํผ ์ดํ ํ์ ๊ฐ์ ๋ฐํํ๋ค. |
๋น์จํจ์
ํํฐ์ ๋ณ๋ก ํฉ๊ณ๋ฅผ ๊ตฌํ ํ ๊ทธ์ ๋ํ ๋น์จ์ ๊ตฌํ๋ ํจ์
| ํจ์ | ์ค๋ช | | โ | โ | | CUME_DIST | ํํฐ์ ๋ณ ํฉ๊ณ์ ๋ํ ๋์ ๋ฐฑ๋ถ์จ์ ์์์ ๋จ์๋ก ๊ณ์ฐํ์ฌ ๋ฐํํ๋ค. ๋ง์ง๋ง ํ์ ๊ฐ์ด 1์ด๋๋ค. | | PERCENT_RANK | ํํฐ์ ๋ณ๋ก ๊ทธ๋ฃนํํ์ฌ ๋ฐฑ๋ถ์ ์์ ๊ฐ์ ๋ฐํํ๋ค. ๊ฐ์ฅ ์ฒซ ํ์ด 0, ๋ง์ง๋ง ํ์ด 1์ด๋๋ค. | | NTILE | ํํฐ์ ์ N ๋ฑ๋ถํ์ฌ 1๋ถํฐ N๊น์ง์ ๋ฑ๊ธ ๊ฐ์ ๋ฐํํ๋ค. ์ ์ฒด ๊ฐ์๋ฅผ N์ผ๋ก ๋๋๊ณ ๋๋จธ์ง๋ฅผ ์ ๋ฑ๊ธ ์์๋ก 1์ฉ ๋ฐฐ๋ถํ์ฌ ๋ฑ๊ธ๋ณ ๊ฐ์๋ฅผ ์ ํ๋ค. ex ) 10๊ฐ๋ฅผ 4๋ฑ๊ธ์ผ๋ก ๋๋๋ฉด ๊ฐ ๋ฑ๊ธ๋ณ ๊ฐ์๋ 3, 3, 2, 2๊ฐ ๋๋ค | | RATIO_TO_REPORT | ํํฐ์ ๋ณ ํฉ๊ณ์ ๋ํ ๋น์จ์ ๊ณ์ฐํ์ฌ ๋ฐํํ๋ค. |
Top N ์ฟผ๋ฆฌ
์์ N ์์ ๊น์ง๋ฅผ ์ถ์ถํ๋ ์ฟผ๋ฆฌ
๊ธฐ๋ณธ์ ์ผ๋ก ์์ํจ์๋ฅผ ์ฌ์ฉํด์ ์ฟผ๋ฆฌ๋ฅผ ์์ฑํ ์ ์๋ค.
ROWNUM ํจ์
-
ROW_NUMBER ํจ์์ ๋ฌ๋ฆฌ ํ์ฌ ์ ์ฅ๋ ๋ฐ์ดํฐ๋ฅผ ๊ทธ๋๋ก ๋๊ณ ๊ฐ ํ์ ์์ฐจ์ ์ธ ๋ฒํธ๋ฅผ ๋ถ์ฌ์ฃผ๋ ํจ์์ด๋ค.
1 2 3
SELECT ROWNUM, EMPNO, ENAME, SAL FROM EMP WHERE ROWNUM <= 5;
-
์ฒซ ํ๋ถํฐ ์ฐจ๋ก๋ก ์ํํ๋ฉด์ ๊ฐ์ ๋ฐํํ๊ธฐ ๋๋ฌธ์ ์ค๊ฐ์ ๊ฑด๋๋ฐ๊ณ ๊ฐ์ ๊ฐ์ ธ์ฌ ์ ์๋ค๋ ์ ์ด๋ค. WHERE ์ ์ ROWNUM์ ์ฌ์ฉํ ๊ฒฝ์ฐ ์กฐ๊ฑด์์ด FALSE๊ฐ ๋๋ฉด ์ํ๋ฅผ ๋ฉ์ถ๊ณ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ๋ฏ๋ก ์ฃผ์ํด์ผ ํ๋ค.
1 2 3 4 5
SELECT ROWNUM, EMPNO, ENAME, SAL FROM EMP WHERE ROWNUM = 5; -- ๋ฑ์ ๋น๊ต๋ฅผ ํ๋ฉด ๊ฒฐ๊ณผ๋ฅผ ๊ฐ์ ธ์ค์ง ๋ชปํ๋ค. ์กฐ๊ฑด์ด ROWNUM =1 ์ผ๋ ๋ฐ๋ก FALSE ๊ฐ ๋์ด ๋์ด์ ์ํํ์ง ๋ชปํ๊ณ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ๊ธฐ ๋๋ฌธ
-
ORDER BY์ ํจ๊ป ์ฌ์ฉ ์ ์ ๋ ฌ ์ํ ํ ๋จ์ํ๊ฒ ๊ฐ ํ์ ๋ฒํธ๋ฅผ ๋ถ์ด๊ณ ์ถ์ด์ ์ฌ์ฉํ ๊ฒฝ์ฐ์๋ ์ ๋ ฌ ์ํ ์ ์ ๋ฒํธ๊ฐ ๋ถ์ฌ์ง๋ฏ๋ก ๋ฒํธ๊ฐ ์์ผ์ ์ถ๋ ฅ๋๋ค โ ์ด ๋๋ ROW_NUMBER๋ฅผ ์ฌ์ฉํด์ ํด๊ฒฐํด์ผ ํ๋ค.
์๋์ฐ ํจ์์ ์์ ํจ์
์์ ํจ์๋ฅผ ์ฌ์ฉํด์ TOP N ์ฟผ๋ฆฌ๋ฅผ ์์ฑํ ์ ์๋ค.
1
2
3
SELECT *
FROM (SELECT RANK () OVER (ORDER BY SAL DESC) AS RANK, EMPNO, ENAME, SAL FROM EMP)
WHERE RANK <= 5 ;
๊ณ์ธตํ ์ง์์ ์ ํ์กฐ์ธ
๊ฐ ๋ ์ฝ๋๊ฐ ํ๋์ ๋ ธ๋๊ฐ ๋๊ณ ๋ ธ๋์ ๋ถ๋ชจ-์์ ๊ด๊ณ๋ฅผ ์ ์ํ์ฌ ์ผ์ข ์ ํธ๋ฆฌ๊ตฌ์กฐ์ ๊ฐ์ด ๋ฐ์ดํฐ๋ฅผ ๋ชจ๋ธ๋ง ํ ์๊ฐ ์๋๋ฐ ์ด๋ฅผ ๊ณ์ธตํ ๋ชจ๋ธ์ด๋ผ๊ณ ํ๋ค.
๊ณ์ธตํ ๋ชจ๋ธ์์ ์์ ๋ ธ๋์์ ํ์๋ ธ๋๋ก ์ฐ์์ ์ผ๋ก ๋ฐ์ดํฐ์ ์ ๊ทผํด์ ๊ฒฐ๊ณผ๋ฅผ ์กฐํํด์ผ ํ ๊ฒฝ์ฐ๊ฐ ์๋๋ฐ ์ด๋ด ๊ฒฝ์ฐ ์ฌ์ฉํ ์ ์๋ ๊ฒ์ด ๊ณ์ธตํ ์ง์์ ์ ํ์กฐ์ธ์ด๋ค.
๊ณ์ธตํ ์ง์
๊ณ์ธตํ ์ง์๋ ๊ณ์ธต ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๋ ์ปฌ๋ผ์ ๋์์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ถ๋ ฅํ ๋ ์ฌ์ฉํ ์ ์๋ ํน๋ณํ ํค์๋๋ฅผ ์ ๊ณตํ๋ค.
ํค์๋ | ์ค๋ช |
---|---|
LEVEL | ์ ์ฒด ๊ณ์ธต ๊ตฌ์กฐ์์ ํ์ฌ์ ๋ ๋ฒจ ๋๋ ๊น์ด๋ฅผ ๋ฐํํ๋ค. |
๋ฃจํธ ๋ ธ๋๊ฐ 1์ด ๋๋ฉฐ ํ ๋ ๋ฒจ ๋ด๋ ค๊ฐ ๋๋ง๋ค 1 ์ฉ ์ฆ๊ฐํ๋ค | ย |
SYS_CONNECT_BY_PATH | ์ต์์ ๋ฃจํธ ๋ ธ๋๋ก๋ถํฐ ํ์ฌ ๋ ธ๋๊น์ง ๊ฒฝ๋ก๋ฅผ ์ถ๋ ฅํ๋ ํจ์ |
START WITH | ๊ฒฝ๋ก์ ์์์ด ๋๋ ๋ฃจํธ ๋ ธ๋๊ฐ ๋๋ ์กฐ๊ฑด์ ์ง์ ํ๋ค. |
CONNECT BY | ๋ถ๋ชจ ๋ ธ๋๋ก๋ถํฐ ์์ ๋ ธ๋๋ก์ ์ฐ๊ฒฐ์ ์ง์ ํ๋ค. |
CONNECT_BY_ROOT | ๋ฃจํธ๋ ธ๋์ ์ง์ ๋ ์ปฌ๋ผ๊ฐ์ ๋ฐํํ๋ค. |
CONNECT_BY_ISLEAF | ๊ฐ์ฅ ๋ง๋จ ๋ ธ๋์ด๋ฉด 1์ ๋ฐํํ๊ณ ๊ทธ ์ธ์๋ 0์ ๋ฐํํ๋ค. |
PRIOR | ๋ฐ๋ก ์์์ ๋ถ๋ชจ ๋ ธ๋๋ฅผ ๋ฐํํ๋ค. |
NOCYCLE | ์ฌ์ดํด ๋ฐ์ ์ดํ์ ๋ฐ์ดํฐ๋ฅผ ์ ๊ฐํ์ง ์์์ผ๋ก์จ ๋ฌดํ ๋ฃจํ๋ฅผ ๋ฐฉ์งํ๋ค. |
ORDER SIBLINGS BY | ORDER BY ์ ์ด ์ ์ฒด๋ฅผ ์ ๋ ฌํ๋ ๊ฒ์ ๋นํ์ฌ ORDER SIBLINGS BY๋ ๊ฐ์ ๋ ๋ฒจ์ ํ์ ๋ ธ๋๋ผ๋ฆฌ ์ ๋ ฌํ๋ค. |
-
์๋ฐฉํฅ ์ ๊ฐ
CONNECT BY PRIOR ์์ = ๋ถ๋ชจ
์์ ๋ ธ๋๋ก ๋ถ๋ชจ๋ฅผ ์ง์ ํ๋ฏ๋ก ๋ถ๋ชจ โ ์์ ์์ผ๋ก ์ด์ด์ง๋ ์๋ฐฉํฅ ์ ๊ฐ
-
์ญ๋ฐฉํฅ ์ ๊ฐ
CONNECT BY PRIOR ๋ถ๋ชจ= ์์
์์ ๋ ธ๋๋ก ์์์ ์ง์ ํ๋ฏ๋ก ์์โ ๋ถ๋ชจ ์์ผ๋ก ์ด์ด์ง๋ ์๋ฐฉํฅ ์ ๊ฐ
์ ํ์กฐ์ธ
๊ฐ์ ํ ์ด๋ธ์ ๋ํด์ ์กฐ์ธ์ ์ํํ๋๋ก ์ฟผ๋ฆฌ๋ฅผ ์์ฑํ๋ ๊ฒ์ด ๊ฐ๋ฅํ๋ฉฐ ์ด๋ฐ ๊ฒฝ์ฐ๋ฅผ ์ ํ ์กฐ์ธ์ด๋ผ๊ณ ํ๋ค.
์ ํ ์กฐ์ธ์ ํ๋ ๊ฒฝ์ฐ๋ ๊ณ์ธต์ ์ธ ๋ถ๋ฅ ๊ฐ์ ๊ฐ์ง๋ ์ปฌ๋ผ์ ๋ค๋ฃฐ๋,
์ํ๋ถ๋ฅ๋ ์ฃผ์ ์ฒด๊ณ, ๋๋ ํ์ฌ์ ์กฐ์ง๋ ๋ฑ์ ๋ค๋ฃฐ ๋, ๋ถ๋ชจ-์์ ๊ด๊ณ์ ๋ชจ๋ธ๋ง์ ํ ๋ค์, ์ ํ ์กฐ์ธ์ ์ฌ์ฉํด์ ์ฟผ๋ฆฌ๋ฅผ ์์ฑํ๋ฉด ์ ์ฒด ๋ถ๋ฅ ์ฒด๊ณ๋ฅผ ๊ณ์ธต์ ์ผ๋ก ์กฐํํ์ฌ ์ถ๋ ฅํ๋ ๊ฒ์ด ๊ฐ๋ฅํ๋ค.
๋จ, ์ ํ ์กฐ์ธ์ ์ฌ์ฉํ ๊ฒฝ์ฐ ๊ณ์ธต์ ๊น์ด๊ฐ ๊น์ด์ง์๋ก ์ฟผ๋ฆฌ๊ฐ ๋ฐ๋ณต๋๊ณ ๊ธธ์ด์ง๋ ๋จ์ ์ด ์๋ค.โ ์ด ๋ฌธ์ ๋ ๊ณ์ธตํ ์ง์๋ก ํด๊ฒฐํ ์ ์๋ค.
PIVOT ์ ๊ณผ UNPIVOT์
PIVOT : ํ ์ด๋ธ์ ํ๊ณผ ์ด์ ์ ํํ์ฌ ํ ์ด๋ธ์ ์ฌ๊ตฌ์ฑํ๋ ๊ฒ (ํจ์ ์๋)
- PIVOT ์ : ํ์ ์ด๋ก ๋ฐ๊พผ๋ค.
- UNPIVON ์ : ์ด์ ํ์ผ๋ก ๋ฐ๊พผ๋ค.
1
2
3
4
5
6
7
SELECT *
FROM (SELECT E.JOB, D.DNAME
FROM EMP E, DEPT D
WHERE E.DEPTNO = D.DEPTNO)
PIVOT (COUNT(*) FOR DNAME IN ('ACCORDING' AS ACCOUNTING,
'RESEARCH' AS RESEARCH,
'SALES' AS SALES));
์ ๊ทํํ์
์ ๊ทํํ์์ ์ฌ์ฉํ๋ฉด ๋ฌธ์์ด์ ์ฒ๋ฆฌํ ๋, ํจํด์ ๊ธฐ๋ฐํ์ฌ ๊ฒ์, ์นํ, ์ถ์ถ ๋ฑ์ ์ํํ ์ ์๋ค. ๋ฉํ ๋ฌธ์์ ๋ฆฌํฐ๋ด ๋ฌธ์๋ฅผ ์กฐํฉํ์ฌ ํจํด์ ๋ง๋ค๊ณ ์ด ํจํด์ ๋ฐ๋ผ ๋ฌธ์์ด์ ์ฒ๋ฆฌ ํ ์ ์์ด ๋ฌธ์์ด์ ์ฒ๋ฆฌํ๋๋ฐ ํจ์จ์ ์ด๋ค.
๋ฉํ๋ฌธ์, ๋ฆฌํฐ๋ด ๋ฌธ์
-
์ ๊ทํํ์ ๋ฉํ๋ฌธ์
๋ฉํ๋ฌธ์๋ ๋ฌธ์ ๊ทธ ์์ ์ด ๊ฐ์ง ์๋ฏธ๊ฐ ์๋๋ผ ๋ค๋ฅธ ์๋ฏธ๋ก ์ฌ์ฉ๋๋ ๋ฌธ์๋ฅผ ๋งํ๋ค.
์๋ฅผ ๋ค์ด ์ ๊ท ํํ ์์์ ^ ๋ฌธ์๋ ๋ฌธ์ ๊ทธ์์ฒด๋ฅผ ๋ํ๋ด๋ ๊ฒ์ด ์๋๋ผ ์ ๋ ฅ๋ฌธ์์ด์ ์์์ ์๋ฏธํ๋ ๋ฉํ๋ฌธ์์ด๋ค.
๋ฉํ๋ฌธ์ ์๋ฏธ ์ ย ย \ ๋ฉํ๋ฌธ์๋ฅผ ๋ฆฌํฐ๋ด ๋ฌธ์๋ก ํ์ํ๊ฑฐ๋ ๋ฆฌํฐ๋ด ๋ฌธ์์ ๊ฒฐํฉํ์ฌ ์ ํด์ง ๋ฉํ๋ฌธ์๋ฅผ ํ์ \ : \ ย ย \n : ์ค๋ฐ๊ฟ(๊ฐํ) ๋ฌธ์ ย ย ย ย ^ ๊ฐํ์ผ๋ก ๋๋ ๋ฌธ์์ด์ ์์์ง์ ^THE: The ๋ก ์์ํ๋ ๋ฌธ์์ด ย ย $ ๊ฐํ์ผ๋ก ๋๋ ๋ฌธ์์ด์ ๋์ง์ ing$: ing๋ก ๋๋๋ ๋ฌธ์์ด ย ย . ์์์ ํ ๋ฌธ์ (๊ฐํ๋ฌธ์ ์ ์ธ) a.b : acb, a-b, a1b, โฆ ย ย ? ์ ํ๋ฌธ์ 0 ๋๋ 1๊ฐ no? : n, no ย ย * ์ ํ๋ฌธ์ 0๊ฐ ์ด์ no* : n, no, noo, nooo, โฆ ย ย + ์ ํ๋ฌธ์ 1๊ฐ ์ด์ no+: no, noo, nooo โฆ ย ย ย ย ์ ํ์ ์ผ์น a b : a, b [ ] ๋๊ดํธ ์์ ๋ฌธ์๋ค ์ค ํ๋์ ์ผ์น [abc] : a, b, c ย ย [-] ์ฐ์ ๋ฌธ์์ ๋ฒ์๋ฅผ ์ง์ [a-z]: a๋ถํฐ z๊น์ง ์๋ฌธ์ ์ํ๋ฒณ ๋ฌธ์ ย ย [^] ๋๊ดํธ ์์ ๋ฌธ์๋ค์ ์ ์ธํ ๋๋จธ์ง ๋ฌธ์๋ค ์ค ํ๋์ ์ผ์น [^abc]: d, e, z, โฆ (a, b, c๋ฅผ ์ ์ธํ ๋๋จธ์ง ๋ฌธ์) ย ย () ์๊ดํธ๋ก ๋ฌถ์ธ ํํ์์ ํ ๋จ์๋ก ์ทจ๊ธ (ab) : ab ย ย -
์ ๊ทํํ์ ๋ฆฌํฐ๋ด๋ฌธ์
๋ฌธ์ ๊ทธ ์์ฒด๊ฐ ๊ฐ์ง ์๋ฏธ ๊ทธ๋๋ก ์ฌ์ฉ๋๋ ๋ฌธ์.
์ ๊ทํํ์์์ ํจํด ๋งค์นญ์ ์ํํ ๋ ์ฒ๋ฆฌ๋๋ ์ต์ ๋จ์๋ ๋ฌธ์์ด๋ค.
์ํ๋ฒณ์ ๊ฒฝ์ฐ a, A์ ๊ฐ์ด ๋จ์ผ ๋ฌธ์ ํ๋๊ฐ ๊ทธ์ ํด๋นํ๊ณ ํ๊ธ์ ๊ฒฝ์ฐ์๋ ํ์์ ์ ํ ๊ฐ๋ฌธ์๊ฐ ๋จ์๊ฐ ๋๋ค.
Leave a comment