HIVE窗口函数

重点介绍窗口函数的语法定义,函数应用范围,案例结合。下面内容是根据网上资料整理而成,均带有链接

  • 重要英文参考来源
    https://cwiki.apache.org/confluence/display/Hive/LanguageManual+WindowingAndAnalytics#app-switcher

窗口函数的应用场景http://yugouai.iteye.com/blog/1908121

HIVE窗口函数_第1张图片

LEAD

  • 语法定义

LEAD(col,n,DEFAULT) 用于统计窗口内往下第n行值,
参数1为列名,参数2为往下第n行(可选,默认为1),参数3为默认值(当往下第n行为NULL时候,取默认值,如不指定,则为NULL)

  • 应用场景

统计用户停留时间,用户停留在网页的总时间,某网页的总停留时间

  • 案例学习

https://blog.csdn.net/kent7306/article/details/50441967

LAG

  • 语法定义

LAG(col,n,DEFAULT) 用于统计窗口内往上第n行值
参数1为列名,参数2为往上第n行(可选,默认为1),参数3为默认值(当往上第n行为NULL时候,取默认值,如不指定,则为NULL)

  • 应用场景

与lead类似

  • 案例学习

https://blog.csdn.net/sunnyyoona/article/details/56484919

FIRST_VALUE、LAST_VALUE()

  • 语法定义

  • 应用场景

  • 案例学习

https://blog.csdn.net/evilcry2012/article/details/52788961
http://blog.itpub.net/28929558/viewspace-1181376/
https://blog.csdn.net/sunnyyoona/article/details/56484919
https://www.cnblogs.com/qingyunzong/p/8798606.html#_label1

OVER 类型的

常见的有

  • COUNT
  • SUM
  • MIN
  • MAX
  • AVG

用法

SUM(字段) over (partition by 字段 a order by 计算项 b desc ) rank
  • 应用场景
    求聚合的值

  • 案例学习

http://yugouai.iteye.com/blog/1908121
计算已从平均的案例
https://clarity-us.com/quick-tip-calculrages-using-hive/

分析函数

包括

  • RANK
  • ROW_NUMBER
  • DENSE_RANK
  • CUME_DIST
  • PERCENT_RANK
  • NTILE 用于将分组数据按照顺序切分成n片,返回当前切片值

注意

DISTINCT支持SUM, COUNT和AVG等聚合函数,以及在每个分区内不同值上的聚合。当前实现具有以下限制:由于性能原因,在分区子句中不能支持ORDER BY或窗口规范。 支持的语法如下:

COUNT(DISTINCT a) OVER (PARTITION BY c)

Hive 2.1.0 及更高版本支持聚合函数在OVER字句中使用
添加了对引用OVER子句中的聚合函数的支持。 例如,目前我们可以使用OVER子句中的SUM聚合函数,如下所示:

SELECT rank() OVER (ORDER BY sum(b))
FROM T
GROUP BY a;

详细的中文介绍http://saboloh.com/2016/11/09/hive-languagemanual-windowingandanalytics/

你可能感兴趣的:(sql)