开窗函数

 

  • 简单理解,就是对查询的结果多出一列,这一列可以是聚合值,也可以是排序值。
  • 开窗函数一般就是说的是over()函数,其窗口是由一个 OVER 子句 定义的多行记录
  • 开窗函数一般分为两类,聚合开窗函数和排序开窗函数。

 

简单来说,窗口函数有以下功能:

1)同时具有分组和排序的功能

2)不减少原表的行数

3)语法如下:

<窗口函数> over (partition by <用于分组的列名> order by <用于排序的列名> [rows between ?? and]

 


select 函数(参数) over([partition by colname] [order by colname] [ROWS Control])
from tableName
 
ROWS Control 是用来控制窗口的
常用的组合如下:
    | --ROWS BETWEEN  x PRECEDING AND y FOLLOWING 
    当前行和前面x行以及后面y行构成窗口进行计算
 
    | --ROWS BETWEEN  x PRECEDING AND CURRENT ROW
    当前行和前面x行构成窗口进行计算
 
    | --ROWS BETWEEN  UNBOUNDED PRECEDING AND CURRENT ROW
    当前行和前面所有行进行计算 不会超过自己的窗口大小

 

排序开窗

  1. row_number() over()  --123
  2. rank() over()   --113
  3. dense_rank() over()  --112

 

聚合开窗

  

sum() over()
 
avg() over()
 
max() over()
 
min() over()
 
count() over()
posted @ 2024-08-14 13:43  钟鼎山林  阅读(14)  评论(0编辑  收藏  举报