hive一般取top n时,row_number() over(),rank() over(),dense_rank() over()这三个函数即可使用。
row_number()的排序不允许并列,即便时两条记录的值相等也不会出现相同的排序值。即排完序总数不变。
rank()排序时出现相等的值是会有并列,即值相等的两条数据会有相同的序列值。即排完序总数减少。
dense_rank()排序时的值允许并列,但是会进行跳跃的排序,例:1,1,3,4,5,5,7.
hive一般取top n时,row_number() over(),rank() over(),dense_rank() over()这三个函数即可使用。
row_number()的排序不允许并列,即便时两条记录的值相等也不会出现相同的排序值。即排完序总数不变。
rank()排序时出现相等的值是会有并列,即值相等的两条数据会有相同的序列值。即排完序总数减少。
dense_rank()排序时的值允许并列,但是会进行跳跃的排序,例:1,1,3,4,5,5,7.