mysql窗口函数

MySQL的窗口函数是一种特殊类型的函数,可以在窗口上执行操作,而窗口是与当前行相关的一组行。窗口函数能够访问其他与当前行在同一窗口中的行,从而可以进行比如总和、平均值、排名等计算。

MySQL窗口函数可以分为三类:

  1. 聚合函数:如SUM(), AVG(), MIN(), MAX()等,这些也可以作为普通的聚合函数,但在窗口函数的上下文中,它们不会折叠所有行到一个聚合行,而是为每一行返回一个聚合结果。

  2. 排名函数:如RANK(), DENSE_RANK(), ROW_NUMBER(), NTILE()等,这些函数主要用于为窗口中的行分配一个排名。

  3. 值函数:如FIRST_VALUE(), LAST_VALUE(), LEAD(), LAG()等,这些函数用于获取窗口中特定位置的值。

窗口函数的语法如下:

function_name(args) OVER (
  [PARTITION BY partition_expression, ... ]
  [ORDER BY sort_expression [ASC | DESC], ...]
  [window_frame_clause]
)
  • PARTITION BY:用于将结果集划分为多个分区或窗口,每个窗口都是结果集的一个子集,窗口函数将独立于每个窗口运行。

  • ORDER BY:用于在每个窗口内对行进行排序。

  • window_frame_clause:用于定义窗口内的行范围或行间的关系。

例如:

SELECT
  name, salary,
  AVG(salary) OVER (ORDER BY salary) as running_avg
FROM employee;

这将返回员工的姓名,薪水和截止到当前行的薪水的平均值。

注意:窗口函数不能用于WHERE子句中。

  • 5
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值