学习 Hive(十):窗口函数

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

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

窗口函数语法:

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

参考


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

查看所有标签

猜你喜欢:

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

SQL完全手册

SQL完全手册

格罗夫 / 电子工业 / 2006-6 / 68.00元

本书为专业和非专业用户、程序员、数据处理方面的专业人士和希望理解sQL在今天计算机产业中的影响的经理们提供了关于SQL语言的全面深入的介绍。本书为理解和使用SQL提供了一个概念上的框架,描述了SQL的历史和SQL的标准,解释了SQL在各种计算机产业领域(如企业级数据处理、数据仓库、Web站点体系结构)中的作用。这一版包含一些新的章节,专门讲述SQL在应用服务器体系结构中的作用、sQL与xML的集成......一起来看看 《SQL完全手册》 这本书的介绍吧!

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

HTML 编码/解码

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器