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

参考


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

查看所有标签

猜你喜欢:

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

JavaScript面向对象编程指南

JavaScript面向对象编程指南

斯托扬 / 凌杰 / 人民邮电出版社 / 2013-3 / 59.00元

《JavaScript面向对象编程指南》内容包括:JavaScript作为一门浏览器语言的核心思想;面向对象编程的基础知识及其在JavaScript中的运用;数据类型、操作符以及流程控制语句;函数、闭包、对象和原型等概念,以代码重用为目的的继承模式;BOM、DOM、浏览器事件、AJAX和JSON;如何实现JavaScript中缺失的面向对象特性,如对象的私有成员与私有方法;如何应用适当的编程模式,......一起来看看 《JavaScript面向对象编程指南》 这本书的介绍吧!

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

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

Markdown 在线编辑器

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具