hive排序窗口函数三种方式对比

hive排序窗口函数三种方式:

  • ROW_NUMBER()
  • RANK() 
  • DENSE_RANK ()​​​​​​​

原始数据:

hive排序窗口函数三种方式对比

执行语句:

SELECT 
cookieid,
createtime,
pv,
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 itcast_t2 
WHERE cookieid = 'cookie1';

结果:

hive排序窗口函数三种方式对比

总结: 

ROW_NUMBER:从1开始,按照顺序,生成分组内记录的序列

RANK:生成数据项在分组中的排名,排名相等会在名次中留下空位

DENSE_RANK :生成数据项在分组中的排名,排名相等会在名次中不会留下空位