内容简介:窗口函数语法:
窗口函数语法:
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
- 如何开始函数编程的学习?
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Rationality for Mortals
Gerd Gigerenzer / Oxford University Press, USA / 2008-05-02 / USD 65.00
Gerd Gigerenzer's influential work examines the rationality of individuals not from the perspective of logic or probability, but from the point of view of adaptation to the real world of human behavio......一起来看看 《Rationality for Mortals》 这本书的介绍吧!