窗口函数基础概念

  • 窗口函数也叫OLAP函数(Online Anallytical Processing,联机分析处理),可以对数据进行实时分析处理。
  • 窗口:记录集合
  • 窗口函数:在满足某些条件的记录集合上执行的特殊函数,对于每条记录都要在此窗口内执行函数。
  • 有的函数随着记录的不同,窗口大小都是固定的,称为静态窗口;相反,不同的记录对应不同窗口则是滑动窗口
  • 具有分组和排序的功能
  • 原则上只能写在select子句种
  • 不改变原有表行数

    窗口函数的基本用法

    1. <窗口函数> over (partition by <用于分组的字段名> -- partition子句可省略,不指定分组
    2. order by <用于排序的列名>)
  • over关键字:用来指定函数执行的窗口范围,若后面括号为空,则代表窗口包含满足where条件的所有行,窗口函数基于所有行进行计算;如果不为空,则支持以下4种语法来设置窗口:

    • windows_name:给窗口指定一个别名
    • partition by 子句:窗口按照哪些字段进行分组
    • order by 子句:按照哪些字段进行排序
    • frame 子句:frame是当前分区的一个子集,子句用来定义子集的规则,通常用来作为滑动窗口使用

附参考资料:
窗口函数