hsql-排序(rank ,dense_rank,row_number)

题目:

 

 

1.原始数据:

1,3.50
2,3.65
3,4.00
4,3.85
5,4.00
6,3.65

2.创建表,导入数据

create table sc(id string,score float) row format delimited fields terminated by ',';
load data local inpath '/opt/data/sc.txt' into table sc;

3.解题

方法一:

select
score,
dense_rank() over(sort by score desc) dense_rank
from sc

此题需要区分rank,dense_rank,row_number的用法

 

方式二:思路    按score去重排序得到t1表, 在用原表和t1表 left join ,最后排序

-----按score去重排序得到t1表, 在用原表和t1表 left join ,最后排序
select 
       sc.score,
       rank
from sc
    
left join  --- 用原表left join 去重排好序的表
     (
         select score,
                row_number() over (order by score desc) as rank
         from sc
         group by score
     ) t1
on t1.score = sc.score
sort by rank; ---最后再排序

 

posted @ 2021-09-01 23:38  冰底熊  阅读(12)  评论(0)    收藏  举报