在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/

10-12 23:38