oracle菜鳥學習之 分析函式-排序
阿新 • • 發佈:2018-11-20
oracle菜鳥學習之 分析函式-排序
排序函式
1.row_number:返回連續的排序,無論值是否相等
2.rank:具有相等值得行排序相同,序數值隨後跳躍
3.dense_rank:具有相等值得行排序相同,序號是連續得
實驗表
create table chengji(sno number,km varchar2(10),score number); insert into chengji values(1,'YW',60); insert into chengji values(1,'SX',60); insert into chengji values(1,'YY',60); insert into chengji values(2,'YW',70); insert into chengji values(2,'SX',70); insert into chengji values(3,'YW',80); SQL> select * from chengji; SNO KM SCORE ---------- ------------------------------ ---------- 1 YW 60 1 SX 60 1 YY 60 2 YW 70 2 SX 70 3 YW 80 1 YW 60 1 SX 60 1 YY 60 2 YW 70 2 SX 70 SNO KM SCORE ---------- ------------------------------ ---------- 3 YW 80 12 rows selected. SQL>
row_number
格式:row_number() over()
排序類似排名,如果A和B的值都是100,那麼A的排序為1,B的排序為2
SQL> select sno,km,score,row_number() over (order by score desc) from chengji; SNO KM SCORE ROW_NUMBER()OVER(ORDERBYSCOREDESC) ---------- ------ ---------- ---------------------------------- 3 YW 80 1 3 YW 80 2 2 YW 70 3 2 YW 70 4 2 SX 70 5 2 SX 70 6 1 SX 60 7 1 YY 60 8 1 SX 60 9 1 YW 60 10 1 YY 60 11 SNO KM SCORE ROW_NUMBER()OVER(ORDERBYSCOREDESC) ---------- ------ ---------- ---------------------------------- 1 YW 60 12 12 rows selected. SQL>
rank
排序類似排名,如果A和B的值都是100,那麼A的排序為1,B的排序為1,C的為3
SQL> select sno,km,score,rank() over (order by score desc) from chengji; SNO KM SCORE RANK()OVER(ORDERBYSCOREDESC) ---------- ------ ---------- ---------------------------- 3 YW 80 1 3 YW 80 1 2 YW 70 3 2 YW 70 3 2 SX 70 3 2 SX 70 3 1 SX 60 7 1 YY 60 7 1 SX 60 7 1 YW 60 7 1 YY 60 7 SNO KM SCORE RANK()OVER(ORDERBYSCOREDESC) ---------- ------ ---------- ---------------------------- 1 YW 60 7 12 rows selected. SQL>
dense_rank
排序類似排名,如果A和B的值都是100,那麼A的排序為1,B的排序為1,C的排序為2
SQL> select sno,km,score,dense_rank() over (order by score desc) from chengji;
SNO KM SCORE DENSE_RANK()OVER(ORDERBYSCOREDESC)
---------- ------ ---------- ----------------------------------
3 YW 80 1
3 YW 80 1
2 YW 70 2
2 YW 70 2
2 SX 70 2
2 SX 70 2
1 SX 60 3
1 YY 60 3
1 SX 60 3
1 YW 60 3
1 YY 60 3
SNO KM SCORE DENSE_RANK()OVER(ORDERBYSCOREDESC)
---------- ------ ---------- ----------------------------------
1 YW 60 3
12 rows selected.
SQL>