在Hive SQL中使用over和rank关键字的含义/目的是什么?
select rank() over (order by net_worth desc) as rank, name, net_worth from wealth order by rank, name;
+------+---------+---------------+
| rank | name | net_worth |
+------+---------+---------------+
| 1 | Solomon | 2000000000.00 |
| 2 | Croesus | 1000000000.00 |
| 2 | Midas | 1000000000.00 |
| 4 | Crassus | 500000000.00 |
| 5 | Scrooge | 80000000.00 |
+------+---------+---------------+
最佳答案
OVER子句功能强大,无论您是否使用GROUP BY,都可以在不同范围内聚合(“窗口”)OVER
子句定义查询结果集中的窗口或用户指定的行集。然后,窗口函数将为窗口中的每一行计算一个值。您可以将OVER
子句与函数一起使用以计算聚合值,例如移动平均值,累积聚合,运行总计或每组结果的前N个
Over子句可以与聚合函数和排名函数结合使用。 over子句在与聚合或排序功能相关联之前确定记录的分区和顺序。
假设您仅使用rank()函数,那么sql将如何理解将基于哪个基础计算排名。示例表具有3列名称,即net_worth和net_profit。净利润最高的名称将排名第一。因此,您必须告诉以最高net_profit为基础计算排名的sql。
关于hadoop - 在Hive SQL中使用over和rank关键字的目的是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33536684/