Error number: 3599; Symbol: ER_WINDOW_FUNCTION_IGNORES_FRAME; SQLSTATE: HY000
Message: Window function ‘%s’ ignores the frame clause of window ‘%s’ and aggregates over the whole partition
ER_WINDOW_FUNCTION_IGNORES_FRAME错误编号是3599,SQLSTATE是HY000,这个错误是MySQL语法检查时发现的,它表示窗口函数没有正确的使用窗口边界。
窗口函数是MySQL中用于分析数据的一种函数,它可以从一系列行中计算一个值。MySQL支持以下窗口函数:LEAD(),LAG(),FIRST_VALUE(),LAST_VALUE()等。它们是基于窗口边界来计算值的,而窗口边界可以让我们对行进行分割,也就是说窗口边界控制了窗口函数要使用哪些行。
当MySQL检查SQL语句时,如果发现没有为窗口函数正确定义窗口边界,就会抛出ER_WINDOW_FUNCTION_IGNORES_FRAME错误。这是因为MySQL需要正确的窗口边界来确定窗口函数要使用的行,没有设置正确边界时就会抛出错误。
解决ER_WINDOW_FUNCTION_IGNORES_FRAME错误的方法就是正确定义窗口边界,在使用窗口函数的时候需要指定窗口大小和窗口起始偏移量。比如,要使用FIRST_VALUE()函数计算10行内的第一个值,就可以使用下面的语法:
FIRST_VALUE(expression) OVER (PARTITION BY col1 ORDER BY col2 ROWS BETWEEN UNBOUNDED PRECEDING AND 9 PRECEDING)
上面的窗口边界是“UNBOUNDED PRECEDING AND 9 PRECEDING”,表示需要使用窗口的前10行用于计算结果。确保使用正确的窗口边界就可以解决ER_WINDOW_FUNCTION_IGNORES_FRAME错误了。