学习 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

参考


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

查看所有标签

猜你喜欢:

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

高性能网站

高性能网站

(美)苏德 / 东南大学出版社 / 2008年 / 28.00元

《高性能网站》中的规則向你解释了可以怎样优化网站中包含的Ajax、CSS、JavaScript、Flash和图片。每个规则都可以在本书的网站上找到对应的特别例子和代码片段。这些规則包括以下内容:减少HTTP连接请求、使用内容分发网络(ContentDeliveryNetwork)、在HTTP协议头添加过期时间、把部分内容变成Gzip格式、把样式表(stylesheets)放在顶部、将脚本放在底部、......一起来看看 《高性能网站》 这本书的介绍吧!

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

在线压缩/解压 JS 代码

URL 编码/解码
URL 编码/解码

URL 编码/解码

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具