千家信息网

oracle菜鸟学习之 分析函数-排序

发表于:2025-01-18 作者:千家信息网编辑
千家信息网最后更新 2025年01月18日,oracle菜鸟学习之 分析函数-排序排序函数1.row_number:返回连续的排序,无论值是否相等2.rank:具有相等值得行排序相同,序数值随后跳跃3.dense_rank:具有相等值得行排序相
千家信息网最后更新 2025年01月18日oracle菜鸟学习之 分析函数-排序

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                     8012 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                     1212 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                712 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                      312 rows selected.SQL> 
0