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; ---最后再排序
有疑问可以加wx:18179641802,进行探讨