hive的rank和dense rank
时间: 2023-09-13 12:02:58 浏览: 107
Hive中分组取topN_row_number-rank和dense_rank的使用.pdf
Hive中的rank和dense rank是两个排序函数,它们在对数据进行排序时有一些区别。rank函数在排序过程中会跳过并列排名,即如果有多个值相等,它们会被跳过,下一个值的排名会按照跳过的值的个数进行计算。而dense rank函数则不会跳过并列排名,它会为每个并列排名的值都分配一个排名,不会有任何跳过。
举个例子,假设我们有一个包含姓名和分数的表格,我们想要按照分数对数据进行降序排列,并且计算每个人的排名。使用rank函数,如果两个或多个人有相同的分数,其中一个人的排名可能会被跳过,而使用dense rank函数,每个人都会有一个唯一的排名。
在Hive中,我们可以使用row_number() over()、rank() over()和dense_rank() over()函数来实现这些功能。row_number()函数会为每一行分配一个唯一的序号,rank()函数会为每个行分配一个排名,而dense_rank()函数会为每个行分配一个密集的排名,不会有任何跳过。
总结起来,rank函数会跳过并列排名,而dense rank函数不会跳过,并为每个并列排名分配一个排名。这样,我们可以根据具体的需求选择使用合适的函数来对数据进行排序和排名操作。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* [hive中三个排序函数rank、row_number、dense_rank区别](https://blog.csdn.net/weixin_42399606/article/details/127546821)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
- *2* *3* [hive窗口函数之排名函数row_number、rank和dense_rank](https://blog.csdn.net/jianai858/article/details/118490540)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
阅读全文