3.1、row_number()、rank() 和 dense_rank() 的区别 ROW_NUMBER():为每一行分配唯一的行号,适合唯一标识需求。 RANK():为重复值分配相同的排名,并在后续排名中跳过名次,适合需要处理排名的场景。 DENSE_RANK():为重复值分配相同的排名,但不跳过名次,适合希望连续排名的场景。 下面表格总结了这三个函数的主要...
row_number:不管col2字段的值是否相等,行号一直递增,比如:有两条记录的值相等,但一个是第一,一...
DENSE_RANK ROW_NUMBER rank 1 1 1 2 2 2 2 3 2 2 4 4 3 5
如上述表格,rank() / row_number() / dense_rank() 都是进行排名. rank()在处理相同排名的时候根据同排名数据数量进行顺延排名 dense_rank()在处理相同排名的时候不会顺延排名 row_number()如函数名,就是单单是排名后的行数 HIVE2.10以后over()函数支持对聚合函数的支持 SELECT rank() OVER (ORDER BY sum...
DENSE_RANK ROW_NUMBER rank 1 1 1 2 2 2 2 3 2 2 4 4 3 5 5 例子中都是排名,就是在处理并列第二名的时候有区别