Hive窗口函数
总览
- 窗口函数是一组特殊函数
- 扫描多个输入行来计算每个输出值,为每行数据生成一行结果
- 可以通过窗口函数来实现复杂的计算和聚合
语法
Function (arg1,..., arg n) OVER ([PARTITION BY <...>] [ORDER BY <....>] [<window_clause>])
-
PARTITION BY类似于GROUP BY,未指定则按整个结果集
-
只有指定ORDER BY子句之后才能进行窗口定义
-
可同时使用多个窗口函数
-
过滤窗口函数计算结果必须在外面一层
-
按功能可划分为:排序,聚合,分析
-
窗口函数又名开窗函数,属于分析函数的一种,用于解决复杂报表统计需求的功能强大的函数。
-
窗口函数用来计算基于组的某种聚合值,它和聚合函数的不同之处是:对于每个组返回多行,而聚合函数对于每个组只返回一行。
-
开窗函数指定了分析函数工作的数据窗口大小,这个数据窗口大小可能会随着行的变化而变化。
-
归纳:就是从现有的表上,额外多加一列出来展示,这也是从视觉上来讲最直观的体验。
-
在深入研究Over字句之前,一定要注意:在SQL处理中,窗口函数都是最后一步执行,而且仅位于Order by字句之前。
一 数据准备
saml,2018-01-01,10
tony,2018-01-02,15
saml,2018-02-03,23
tony,2018-01-04,29
saml,2018-01-05,46
saml,2018-04-06,42
tony,2018-01-07,50
saml,2018-01-08,55
mart,2018-04-