๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
์ž๊ฒฉ์ฆ๐Ÿชช/SQLD

์ˆœ์œ„ ํ•จ์ˆ˜ : ROW_NUMBER(), RANK(), DENSE_RANK()

by @ENFJ 2023. 10. 30.

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() ๋“ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค. 

https://doorbw.tistory.com/221


RANK()

 

๋™์ ์ด๋ฉด ๋™๋“ฑํ•œ ์ˆœ์œ„๋ฅผ ๋ถ€์—ฌํ•œ๋‹ค.

 

https://doorbw.tistory.com/221

 


Dense_RANK()

์ ์ˆ˜๊ฐ€ ๋™์ผํ•  ๊ฒฝ์šฐ ์ˆœ์œ„๋Š” ๋˜‘๊ฐ™์ง€๋งŒ ๋“ฑ์ˆ˜๊ฐ€ ๊ฑด๋„ˆ๋›ฐ์ง€ ์•Š๊ณ  ์ญ‰ ์ด์–ด์ง„๋‹ค.

https://doorbw.tistory.com/221

 

'์ž๊ฒฉ์ฆ๐Ÿชช > 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