在上面的示例中,DENSE_RANK为每个学生分配排名值,相同分数的学生不会跳过排名。 总结: ROW_NUMBER分配唯一排名,不管是否相同。 RANK分配排名,相同排名的会跳过。 DENSE_RANK分配排名,相同排名的不会跳过。
1、row_number、rank、dense_rank ROW_NUMBER() –从1开始,按照顺序,生成分组内记录的序列 RANK() 生成数据项在分组中的排名,排名相等会在名次中留下空位 DENSE_RANK() 生成数据项在分组中的排名,排名相等会在名次中不会留下空位 row_number: 按顺序编号,不留空位 rank: 按顺序编号,相同的值编相同号,留空...
create table tmpasselect cookieid,createtime,pv,row_number()over(partition by cookieid order by pv desc)asindex from cookie2;select*from tmp where index<=3;结果: cookie12015-04-1271cookie12015-04-1152cookie12015-04-1643cookie22015-04-1591cookie22015-04-1672cookie22015-04-1363 4. rank()操作...
SELECT empid、depid、salary, Row_Number() OVER (partition by deptid ORDER BY salary desc) rank FROM employee 参考: 一、分析函数 用于等级、百分点、n分片等。 新增加序号列NTILE, ROW_NUMBER(), RANK(), DENSE_RANK() Rank、DENSE_RANK RANK()在出现等级相同的元素时预留为空,DENSE_RANK()不会。
本篇主要来介绍一下hive中三个常用的排序函数row_number(),rank()和dense_rank()。 1、数据 先来看一下我们的数据。我们使用spark往hive数据库中写入数据: 代码语言:javascript 复制 importspark.implicits._ val seqData=Seq(("1班","小A","70"),("2班","小B","84"),("3班","小C","70"),(...
row_number:无并列排名 dense_rank:有并列排名,并且依次递增 rank:有并列排名,不依次递增 percent_rank:(rank的结果-1)/(分区内数据的个数-1) cume_dist:计算某个窗口或分区中某个值的累积分布。 NTILE(n):对分区内数据再分成n组,然后打上组号
rank函数:对有序序列编号,当排序字段取值相同时编号相同,且下一条取值不同记录的编号不连续。如序列为:13,13,13,13,13,14,…对应的排序编号为1,1,1,1,1,6,… dense_rank函数:对有序序列编号,当排序字段相同时编号相同,且下一条记录的编号仍连续。如序列为:13,13,13,13,13,14,…对应的排序编号为1,...
RANK() OVER(PARTITION BY cookieid ORDER BY pv desc) AS rn1, DENSE_RANK() OVER(PARTITION BY cookieid ORDER BY pv desc) AS rn2, ROW_NUMBER() OVER(PARTITION BY cookieid ORDER BY pv DESC) AS rn3 FROM cookie2 WHERE cookieid = 'cookie1'; ...
排序对应的四个窗口函数为:rank、dense_rank、row_number、ntitle rank:计算排序时,如果存在相同位次的记录,则会跳过之后的位次。 e.g. 有三条记录排在第1位时:1位、1位、1位、4位... dense_rank:计算排序时,即使存在相同位次的记录,也不会跳过之后的位次。 e.g...
row_number:不管col2字段的值是否相等,行号一直递增,比如:有两条记录的值相等,但一个是第一,一...