ROW_NUMBER() ๋ SQL์์ ์ฌ์ฉ๋๋ ์๋์ฐ ํจ์ ์ค ํ๋์ ๋๋ค.
ROW_NUMBER() ํจ์๋ ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ ์งํฉ์ ๊ฐ ํ์ ๋ํด ๊ณ ์ ํ ๋ฒํธ ๋๋ ์์๋ฅผ ํ ๋นํ๋๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
์ด๋ ๊ฒฐ๊ณผ ์งํฉ ๋ด์์ ํ์ ์์๋๋ก ๋์ดํ๊ฑฐ๋ ์์๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํํฐ๋งํ๋๋ฐ ์ ์ฉํฉ๋๋ค.
ROW_NUMBER์ ๊ฒฝ์ฐ ๋์ ์ด์ฌ๋, ์์๋ ๋ค๋ฆ ๋๋ค.
๋ ์ฝ๋(ํ) ๊ฐ์๊ฐ ๊ฒฐ๊ตญ ์์ ๊ฐ์์์.
ROW_NUMBER() ํจ์๋ ์ฃผ๋ก OVER() ์ ๊ณผ ํจ๊ป ์ฌ์ฉ๋๋ฉฐ, ํนํ ์์๋ฅผ ์ง์ ํ๋ ๊ธฐ์ค ์ด์ ๊ธฐ๋ฐ์ผ๋ก ์์๋ฅผ ํ ๋นํ ๋ ์ ์ฉํฉ๋๋ค.
์๋ฅผ ๋ค์ด
SELECT employee_id, employee_name, salary,
ROW_NUMBER() OVER(ORDER BY salary DESC) AS rownum
FROM employees;
์์ SQL ์ฟผ๋ฆฌ๋ "employees" ํ ์ด๋ธ์์ ์ง์์ ์ ๋ณด๋ฅผ ๊ฒ์ํ๊ณ , ๊ทธ๋ค์ ๊ธ์ฌ๋ฅผ ๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ๋ ฌํ ํ, ROW_NUMBER() ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ ์ง์์๊ฒ ๊ธ์ฌ ์์๋ฅผ ํ ๋นํฉ๋๋ค.
OVER(ORDER BY salary DESC) ๋ถ๋ถ์ ROW_NUMBER() ํจ์๊ฐ ์ด๋ค ์ด์ ๊ธฐ์ค์ผ๋ก ์์๋ฅผ ํ ๋นํ ์ง ์ง์ ํฉ๋๋ค.
์ด๋ฌํ ์๋์ฐ ํจ์๋ ์ข ์ข ๋ถ์ ๋ฐ ๋ณด๊ณ ์ฟผ๋ฆฌ์์ ์ฌ์ฉ๋๋ฉฐ, ๊ฒฐ๊ณผ ์งํฉ์ ์์๋ฅผ ์ ์ํ๊ฑฐ๋ ํน์ ์์์ ๋ฐ๋ผ ๊ฒฐ๊ณผ๋ฅผ ํํฐ๋งํ๊ณ ์์๋ฅผ ๋งค๊ธฐ๋๋ฐ ์ ์ฉํฉ๋๋ค. ๋ค๋ฅธ ์๋์ฐ ํจ์๋ก๋ RANK(), DENSE_RANK(), NTILE() ๋ฑ์ด ์์ต๋๋ค.
RANK()
๋์ ์ด๋ฉด ๋๋ฑํ ์์๋ฅผ ๋ถ์ฌํ๋ค.
Dense_RANK()
์ ์๊ฐ ๋์ผํ ๊ฒฝ์ฐ ์์๋ ๋๊ฐ์ง๋ง ๋ฑ์๊ฐ ๊ฑด๋๋ฐ์ง ์๊ณ ์ญ ์ด์ด์ง๋ค.
'์๊ฒฉ์ฆ๐ชช > SQLD' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Join (0) | 2023.10.30 |
---|---|
TO_DATE ํจ์ (0) | 2023.10.30 |
47ํ SQLD ๊ธฐ์ถ๋ฌธ์ pdf (1) | 2023.08.25 |
46ํ SQLD ๊ธฐ์ถ๋ฌธ์ pdf (1) | 2023.08.25 |
SQLD ๊ธฐ์ถ๋ฌธ์ ,์์ฝ ์ ๋ฆฌpdf (0) | 2023.08.22 |