[SQL] 用标准SQL实现 DENSE_RANK() 和 RANK() 函数

先看 DENSE_RANK() 和 RANK() 函数用处:

DENSE_RANK() : 排序,不跳过重复位次。

RANK() : 排序,跳过重复位次。

create table test_order(
 name varchar2(100),    -- 名称
 id   int               -- 加入编号
);

insert into test_order values(CAA, 100);
insert into test_order values(CAB, 80);
insert into test_order values(CAC, 80);
insert into test_order values(CAD, 70);
insert into test_order values(CAE, 60);
commit ; 


select name, id, rank() over(order by id), dense_rank() over(order by id )
from test_order ;

[SQL] 用标准SQL实现 DENSE_RANK() 和 RANK() 函数

 

 

使用标准SQL实现:

select name
       ,id
       ,(select count(id) from test_order b where a.id > b.id) + 1          as DENSE_RANK
       ,(select count(distinct id) from test_order b where a.id > b.id) + 1 as RANK
from test_order a 
order by id 
;

[SQL] 用标准SQL实现 DENSE_RANK() 和 RANK() 函数

 

[SQL] 用标准SQL实现 DENSE_RANK() 和 RANK() 函数

上一篇:使用pymysql链接数据库


下一篇:Window下安装并使用InfluxDB可视化工具 —— InfluxDBStudio