hadoop - 在Hive SQL中使用over和rank关键字的目的是什么?

标签 hadoop hive

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

相关文章:

hadoop - HBase 和 Hadoop

hadoop - 为什么Mapreduce中完成的任务数量会减少?

hadoop - ESRI Hive ST_Contains 无法正常工作

mysql - 重新启动 Ambari 管理的 MySQL 服务器

hadoop - Systemd Hdfs 服务 [hadoop] - 启动

java - pig : Read a bag and emit individual tuples

database - 在事务性配置单元表上运行简单的配置单元选择查询时出现 SemanticException [错误 10265]

hadoop - Hive 脚本运行时间过长

仅当日志包含 ERROR 时,Linux Bash 脚本才重定向

hadoop - Row 格式 serde 是创建 Hive 表时要使用的强制参数吗