窗口函数也称开窗函数,简单来说就是对于一个查询SQL,将其结果集按指定的规则进行分区,每个分区可以看作是一个窗口,分区内的每一行,根据其所属分区内的行数据进行函数计算,获取计算结果,作为该行的窗口函数结果值。
rank () :对每个分组行进行排名返回当前行的排名,有间隔
若排序字段的数据重复,则跳过该排名
dense_rank():对每个分组行进行排名 按照值排序时产生一个自增编号 数据相等时会重复,但不会跳过排名
row_number():行编号 返回其分区中当前行的编号
注意:
ClickHouse21.3.1版本后支持窗口函数 sql结尾要带上
Settings allow_experimental_window_functions = 1
MySQL8.0 版本后支持窗口函数 无需后缀
MariaDB10.2.2版本后支持窗口函数 无需后缀
使用方法:
select *,
rank() over (order by 排序字段 desc) as ranking,
dense_rank() over (order by 排序字段 desc) as dese_rank,
row_number() over (order by 排序字段 desc) as row_num
from 表
Settings allow_experimental_window_functions = 1;
也可用来排序数字,字符串,时间等