Window Functions 窗口函数
  1. OVER子句
    1. 聚合函数
    2. 排名函数
    3. 偏移函数
  2. 窗口函数实现基本功能
    1. 分页
    2. 去重
    3. 返回每组前n条数据
    4. 计算累积合计
    5. 统计最大并发
    6. gap&island
    7. 计算分布的模式
    8. 排序层次结构
    9. 数据透视
    10. 计算时效性
  3. 窗口函数优化
  4. 基于窗口函数的解决方案
  5. 所用数据源

OVER子句

  • 覆盖了窗口所覆盖的与当前行相关的数据行集、行的排序及其他相关元素
  • 更准确的说,根据窗口函数作为输入出现在查询逻辑处理阶段的位置,窗口函数可以是一个数据行集或一个关系

例子如下:

1
2
3
SELECT orderid,orderdate,val,RANK() OVER (ORDER BY val DESC) AS rnk
FROM Sales.OrderValues
ORDER BY rnk

聚合函数

  • SUM
  • COUNT
  • MIN
  • MAX
    SQLSERVER 2005 开始支持

排名函数

  • RANK
  • DENSE_RANK
  • ROW_NUMBER
  • NTILE
    SQLSERVER 2005 开始支持

分布函数

  • PERCENT_RANK
  • CUME_DIST
  • PERCENT_CONT
  • PERCENTILE_DISC
    SQLSERVER 2012 开始支持

偏移函数

  • LAG
  • LEAD
  • FIRST_VALUE
  • LAST_VALUE
    以上四个函数SQL SERVER2012开始支持
  • NTH_VALUE

窗口函数实现基本功能

分页

去重

返回每组前n条数据

计算累积合计

统计最大并发

gap&island

计算分布的模式

排序层次结构

数据透视

计算时效性

窗口函数优化

基于窗口函数的解决方案

所用数据源

Author: Black_Jack
Link: https://foryl.github.io/blog/2018/04/12/Window-Functions-OVER-子句/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.