hive排序窗口函数三种方式对比
hive排序窗口函数三种方式:
- ROW_NUMBER()
- RANK()
- DENSE_RANK ()
原始数据:
执行语句:
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';
结果:
总结:
ROW_NUMBER:从1开始,按照顺序,生成分组内记录的序列
RANK:生成数据项在分组中的排名,排名相等会在名次中留下空位
DENSE_RANK :生成数据项在分组中的排名,排名相等会在名次中不会留下空位