学习 Hive(十):窗口函数

栏目: 服务器 · 发布时间: 7年前

内容简介:窗口函数语法:

窗口函数语法:

Function() OVER ([PARTITION BY <...>] [ORDER BY <...>] [Window Specification])

PARTITION BY 定义窗口分区,控制哪些数据行和当前数据行在同一个分区。

ORDER BY 定义窗口排序,控制分区内的 排序 方式,决定了当前行在分内的位置。

Window Specification 定义窗口帧,根据当前行的位置声明哪些行将包含在帧中。 更多

表、数据集、分区、帧和行的关系如下图所示:

学习 Hive(十):窗口函数

窗口函数可以分为三类:

  • 聚合函数,通常的聚合函数,如 SUMMAX 等。
  • 排序函数,排序数据函数,如 RANKROW_NUMBER 等。
  • 分析函数,统计和对比函数,如 LEADLAGFIRST_VALUE 等。

样例数据:

name department salary
Tom A 5500
Jerry A 5000
Lily B 7000
Lucy A 8000
Tony B 3800
Micheal B 4000

聚合函数

需求:计算每个雇员所在部门的总工资额。

查询 SQL:

SELECT  
  name,
  department,
  salary,
  SUM(salary) OVER (PARTITION BY department) AS sum
FROM employee

查询结果:

name department salary sum
Tom A 5500 18500
Jerry A 5000 18500
Lily B 7000 14800
Lucy A 8000 18500
Tony B 3800 14800
Micheal B 4000 14800

排序函数

需求:计算每个雇员所在部门的工资排名。

查询 SQL:

SELECT  
  name,
  department,
  salary,
  RANK() OVER (PARTITION BY department SORT BY salary DESC) AS rank
FROM employee

查询结果:

name department salary rank
Tom A 5500 2
Jerry A 5000 3
Lily B 7000 1
Lucy A 8000 1
Tony B 3800 3
Micheal B 4000 2

分析函数

需求:计算每个雇员所在部门的最高工资。

查询 SQL:

SELECT  
  name,
  department,
  salary,
  FIRST_VALUE(salary) OVER (PARTITION BY department SORT BY salary DESC) AS first
FROM employee

查询结果:

name department salary rank
Tom A 5500 8000
Jerry A 5000 8000
Lily B 7000 7000
Lucy A 8000 8000
Tony B 3800 7000
Micheal B 4000 7000

参考


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

奇点临近

奇点临近

Ray Kurzweil / 董振华、李庆成 / 机械工业出版社 / 2011-10 / 69.00元

人工智能作为21世纪科技发展的最新成就,深刻揭示了科技发展为人类社会带来的巨大影响。本书结合求解智能问题的数据结构以及实现的算法,把人工智能的应用程序应用于实际环境中,并从社会和哲学、心理学以及神经生理学角度对人工智能进行了独特的讨论。本书提供了一个崭新的视角,展示了以人工智能为代表的科技现象作为一种“奇点”思潮,揭示了其在世界范围内所产生的广泛影响。本书全书分为以下几大部分:第一部分人工智能,第......一起来看看 《奇点临近》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具