窗口函数(Mysql与ClickHouse)

​窗口函数也称开窗函数,简单来说就是对于一个查询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;

也可用来排序数字,字符串,时间等

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夜の雨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值