【发布时间】:2021-03-18 02:32:44
【问题描述】:
我在一个 my-sql 表中有三列:Id、name 和 mark。所有行彼此不同。 我使用下面的 sql 语句。在窗口函数内部,我不在两个 SQL 语句中使用 order by。我只有分区和范围框架。
理想情况下,它们应该在窗口函数的派生列下给出相同的结果;但是第一个总是在窗口下给出最大标记;而第二个比较前一行和当前行+1并给出预期结果。第一个真的很奇怪,即使我给出了无限的前行和当前行;实际上,它考虑的是整个窗口而不是给定的框架。
有人可以帮忙吗。
声明 1:
select *
,max(mark) over( partition by name rows between unbounded preceding and current row) as w_f
from ( select * from student order by name, mark asc) a
声明 2:
select *
,max(mark) over( partition by name rows between 1 preceding and 1 following) as w_f
from ( select * from student order by name, mark asc) a
【问题讨论】:
标签: mysql sql max aggregate-functions window-functions