内容简介:窗口函数语法:
窗口函数语法:
Function() OVER ([PARTITION BY <...>] [ORDER BY <...>] [Window Specification])
PARTITION BY
定义窗口分区,控制哪些数据行和当前数据行在同一个分区。
ORDER BY
定义窗口排序,控制分区内的 排序 方式,决定了当前行在分内的位置。
Window Specification 定义窗口帧,根据当前行的位置声明哪些行将包含在帧中。 更多
表、数据集、分区、帧和行的关系如下图所示:
窗口函数可以分为三类:
- 聚合函数,通常的聚合函数,如
SUM
和MAX
等。 - 排序函数,排序数据函数,如
RANK
和ROW_NUMBER
等。 - 分析函数,统计和对比函数,如
LEAD
、LAG
和FIRST_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 |
参考
- Structured Query Language/Window functions
- LanguageManual WindowingAndAnalytics
- Introducing Window Functions in Spark SQL
- Hive分析窗口函数(一) SUM,AVG,MIN,MAX
- Hive分析窗口函数(二) NTILE,ROW NUMBER,RANK,DENSE RANK
- Hive分析窗口函数(三) CUME DIST,PERCENT RANK
- Hive分析窗口函数(四) LAG,LEAD,FIRST VALUE,LAST VALUE
- Hive分析窗口函数(五) GROUPING SETS,GROUPING__ID,CUBE,ROLLUP
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- Go 学习笔记之学习函数式编程前不要忘了函数基础
- python学习日记:day16-------内置函数与匿名函数
- Python函数的学习
- GO-函数学习
- 学习函数式编程 Monad
- 如何开始函数编程的学习?
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Writing Windows VxDs and Device Drivers, Second Edition
Karen Hazzah / CMP / 1996-01-12 / USD 54.95
Software developer and author Karen Hazzah expands her original treatise on device drivers in the second edition of "Writing Windows VxDs and Device Drivers." The book and companion disk include the a......一起来看看 《Writing Windows VxDs and Device Drivers, Second Edition》 这本书的介绍吧!