๋ฐ์ํ
1. ์คํฌ๋ฆฝํธ ํ์ผ ์คํ @
์คํ๋ฐฉ๋ฒ : @ํ์ผ์ด๋ฆ.ํ์ฅ์๋ช
์ง๊ธ๊น์ง ๋ฐฐ์ ๋ ์ฟผ๋ฆฌ๋ค์ ํน์ง :
1) ํ๊ณผ ํ์ ๋น๊ตํ๊ฑฐ๋ ์ฆ, ํ๊ณผ ํ๊ณผ ํ๊ฐ์ ๊ด๊ณ ์ ์, ๋น๊ต, ์ฐ์ฐ
2) ๋ถ์ํจ์ = ์์ ํจ์
3) ์ค์ฒฉ ์ฌ์ฉ ๋ถ๊ฐ, ์๋ธ ์ฟผ๋ฆฌ์์๋ ์ฌ์ฉ ๊ฐ๋ฅ
windows ํจ์
๊ด๋ จ ํจ์ | ์ |
๊ทธ๋ฃน ๋ด ์์ ๊ด๋ จ ํจ์ | RANK, DESNSE_RANK, ROW_NUMBER |
๊ทธ๋ฃน ๋ด ์ง๊ณ ๊ด๋ จ ํจ์ | SUM, MAX, MIN, AVG, COUNT |
๊ทธ๋ฃน ๋ด ํ ์์ ๊ด๋ จ ํจ์ | FIRST_VALUE, LAST_VALUE, LAG, LEAD |
๊ทธ๋ฃน ๋ด ๋น์จ ๊ด๋ จ ํจ์ | CUME_DIST, PERCENT_RANK, NTILE, RATIO_TO_REPORT |
ํต๊ณ ๋ถ์ ๊ด๋ จ ํจ์ | CORR, COVER_POP |
over์ ์ฌ์ฉํ์ฌ ํ๊ณผ ํ ์ฌ์ด์ ๊ฐ์ ๊ตฌํ ์ ์์
SELECT WINDOW_FUNCTION (ARGUMENTS) OVER
( [PARTITION BY ์ปฌ๋ผ] [ORDER BY ์ ] [WINDOWING ์ ])
FROM ํ ์ด๋ธ ๋ช ;
์ฃผ์ ์ฉ์ด
์ฉ์ด | ์ค๋ช |
WINDOW_FUNCTION | ์๋์ฐ ํจ์ ์ด๋ฆ |
ARGUMENTS(์ธ์) | ํจ์์ ๋ฐ๋ผ 0~N ๊ฐ์ ์ธ์ ์ง์ |
PARTITION BY ์ปฌ๋ผ | ์ ์ฒด ์งํฉ์ ๊ธฐ๋ถ์ ์ํด ์๊ทธ๋ฃน์ผ๋ก ๋๋ |
ORDER BY ์ | ์ด๋ค ํญ๋ชฉ์ ๋ํด ์์๋ฅผ ์ง์ ํ ์ง ๊ธฐ์ |
WINDOWING ์ | ํจ์์ ๋์์ด ๋๋ ํ ๊ธฐ์ค์ ๋ฒ์๋ฅผ ๊ฐ๋ ฅํ๊ฒ ์ง์ ( ROWS, RANGE ) |
BETWEEN ์ฌ์ฉ ํ์
ROWS | RANGE BETWEEN
UNBOUNDED PRECEDNG | CURRENT ROW | VALUE_EXPR PRECEDING/FOLLOWING
AND
UNBOUNDED PRECEDNG | CURRENT ROW | VALUE_EXPR PRECEDING/FOLLOWING
BETWEEN ๋ฏธ์ฌ์ฉ ํ์
ROWS | RANGE
UNBOUNDED PRECEDNG | CURRENT ROW | VALUE_EXPR PRECEDING
๊ทธ๋ฃน ๋ด ์์ ํจ์ -Rank ํจ์
rank() over
์๊ธ์ ๋ํด์ ๋์ ์์๋ถํฐ ๋ฎ์ ์์๊น์ง ์์๋ฅผ ๋งค๊ธด๋ค
alias ๋ all_rank๋ก ์ค์ ํ๋ค
rank() over
์ง์ ์ partition by ๊ธฐ์ค์ ์ํด ์๊ทธ๋ฃน์ผ๋ก ๋๋ํ ๊ธ์ฌ์ ๋ํด์ desc(๋ด๋ฆผ์ฐจ์์ผ๋ก) ์์๋ฅผ ๋งค๊ธด๋ค
alias ๋ job_rank๋ก ์ค์ ํ๋ค
from
emp ํ ์ด๋ธ์์ ์ ๋ณด๋ฅผ ๊ฐ์ ธ์จ๋ค
select ์ถ๋ ฅ์ job, ename, sal, rank1, rank2์ ๋ํด์ ํ์ํ๋ค
๋ฐ์ํ
'๐๏ธ์ํํธ์จ์ด > ๐SQL & MySQL' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Oracle SQL] Ch4. ์ฌ๋ฌ ํ ์ด๋ธ์ ๋ฐ์ดํฐ ํ์ (0) | 2021.11.03 |
---|---|
[Oracle SQL] Windows ํจ์ 1 (0) | 2021.11.03 |
[Oracle SQL] Ch18. ๊ณ ๊ธ ์๋ธ ์ฟผ๋ฆฌ (0) | 2021.11.03 |
[Oracle SQL]DB ๊ด๋ จ ๋ช ๋ น์ด (0) | 2021.11.03 |
[MySQL] Ch2.๋ฐ์ดํฐ ์ ํ ๋ฐ ์ ๋ ฌ (0) | 2021.11.02 |