ex24.rank
์์ํจ์
- rownum์ ์ฌ์ฉ์ ์ฌ๋ฌ๊ฐ์ง ์ฉ๋๋ก ๊ตฌํํด๋์ ํจ์
1. rank() over()
- rank() over(order by ์ปฌ๋ผ๋ช
[asc|desc])
- ์์ ๋ถ์ฌ์, ์ค๋ณต๊ฐ์ด ๋ฐ์ํ๋ฉด ๋์ผํ ์์๋ฅผ ๋ถ์ฌํ๊ณ , ์ค๋ณต๊ฐ์ ๊ฐ์๋งํผ ๊ฑด๋๋ฐ๊ธฐ ํ๋ค.
- 1 1 > 3
2. dense_rank() over()
- dense_rank() over(order by ์ปฌ๋ผ๋ช
[asc|desc])
- ์์ ๋ถ์ฌ์, ์ค๋ณต๊ฐ์ด ๋ฐ์ํ๋ฉด ๋์ผํ ์์๋ฅผ ๋ถ์ฌํ๊ณ , ๊ทธ ๋ค์ ์์๋ ๊ฑด๋๋ฐ๊ธฐ ์์ด ์์ฐจ์ ์ผ๋ก ๋ถ์ฌํ๋ค.
- 1 1 > 2
3. row_number() over()
- row_number() over(order by ์ปฌ๋ผ๋ช
[asc|desc])
- ์์ ๋ถ์ฌ์, ์ค๋ณต๊ฐ๊ณผ ์๊ด์์ด ์์ฐจ์ ์ผ๋ก ๋ถ์ฌ
- ์ง์ rownum์ ์ฌ์ฉํ ๊ฒฐ๊ณผ์ ๋์ผ
- 1 2 3
-- ๊ธ์ฌ์์ผ๋ก ๊ฐ์ ธ์ค์์ค. + ์์
-- rownum
select a.*, rownum from (select
name, buseo, basicpay
from tblInsa
order by basicpay desc) a;
--rank over
select
name, buseo, basicpay,
rank() over(order by basicpay desc) as rnum
from tblInsa;
--dense_rank over
select
name, buseo, basicpay,
dense_rank() over(order by basicpay desc) as rnum
from tblInsa;
--row_number over
select
name, buseo, basicpay,
row_number() over(order by basicpay desc) as rnum
from tblInsa;
-- ๊ธ์ฌ 5์
select
name, buseo, basicpay,
row_number() over(order by basicpay desc) as rnum --3.
from tblInsa --1.
where (row_number() over(order by basicpay desc)) = 5 ; --2. (์์ง 3 ์คํ ์ ์ด๋ผ rnum ์กฐ๊ฑด ๋ชป์)
--์์ํจ์ ์ฐ๋ ค๋ฉด ์๋ธ์ฟผ๋ฆฌ ํ์
select * from (select
name, buseo, basicpay,
row_number() over(order by basicpay desc) as rnum
from tblInsa)
where rnum = 5;
--๊ฑด๋๋ด ์์๋ ์๋์ด
select * from (select
name, buseo, basicpay,
rank() over(order by basicpay desc) as rnum
from tblInsa)
where rnum = 9;
update tblInsa set sudang = 200000 where name = '์ด๋ฏธ์ธ';
--2์ฐจ ์ ๋ ฌํ๋ฉด ์๋น์์ผ๋ก ๋ ์ ๋ ฌ > 8,8 > 8,9 (but ์๋น๋ ๋๊ฐ์ผ๋ฉด ๋ฑ์ ๊ฐ์)
select
name, buseo, basicpay, sudang,
rank() over(order by basicpay desc, sudang desc) as rnum
from tblInsa;
๊ทธ๋ฃน๋ณ ์์ ๊ตฌํ๊ธฐ
- ์์ ํจ์ + group by
-- ๊ธ์ฌ ์์
select
name, buseo, basicpay
from tblInsa;
select
name, buseo, basicpay,
dense_rank() over(order by basicpay desc) as rnum
from tblInsa;
-- ๋ถ์๋ณ(๊ธ์ฌ ์์)
select
name, buseo, basicpay,
dense_rank() over(partition by buseo order by basicpay desc) as rnum
from tblInsa;
'ํ๋ก๊ทธ๋๋ฐ ๊ณต๋ถ > Oracle' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ex26] Hierarchical Query (0) | 2023.03.30 |
---|---|
[ex25] with (0) | 2023.03.30 |
[ex23] pseudo, rownum (0) | 2023.03.26 |
[ex22] alter (0) | 2023.03.26 |
[ex21] union (0) | 2023.03.26 |