Mysql 窗查询over 函数用法
over 是一个窗口函数,用于在查询结果集中对某个字段进行排序,并且定义了一个窗口,以便于在窗口中计算聚合值或分析值。
概述
over 是一个窗口函数,用于在查询结果集中对某个字段进行排序,并且定义了一个窗口,以在窗口中计算聚合值或分析值。
换句话说,这个窗口中包含了当前行和接下来行的数据。对于窗口中的每一行,可以使用聚合函数(例如 SUM、AVG、MAX、MIN)来计算一些分析值或聚合值,例如在当前行及其接下来的9行中,计算 accrym_end 字段的最大值、最小值、平均值等。
2022-08-11
用例
假设现在有一个表,表结构为 p_no,BEGNDATE,ENDDATE
p_no | BEGNDATE | ENDDATE |
---|---|---|
01 | 2022-08-11 | 2022-08-14 |
01 | 2022-08-17 | 2022-08-23 |
01 | 2022-10-11 | 2022-10-12 |
02 | 2022-10-11 | 2022-10-12 |
… | … | … |
现在需要查询同一个人,开始时间大于上次结算时间15天以上的数据,那么就需要根据人员编号p_no,对数据表进行group by ,
下面展示同样高亮的 代码片
.
(select sum(ENDDATE - BEGNDATE) over (order by BEGNDATE rows between current row and 9 following) > 15)