有没有人知道SQL标准是否定义,PostgreSQL是否会实现(10.x或更高版本)参数窗口大小?
我称之为参数窗口大小的MVE:
WITH
D AS (SELECT T.x::FLOAT FROM generate_series(0., 10., 0.1) AS T(x)),
W AS (SELECT 10 AS WindowSize)
SELECT
D.x
,AVG(D.x) OVER (ROWS BETWEEN W.WindowSize PRECEDING AND CURRENT ROW)
FROM
D, W;
会引发以下错误:
ERROR: argument of ROWS must not contain variables
LINE 8: ,AVG(D.x) OVER (ROWS BETWEEN W.WindowSize PRECEDING AND C...
^
********** Error **********
ERROR: argument of ROWS must not contain variables
SQL State: 42P10
我理解参数窗口实现起来很复杂。 我知道我可以使用Dynamic Query和PL / PGSQL绕过这个限制的某些方面。
我的问题是:
答案 0 :(得分:2)
不,这不是标准的SQL。
您可以在BNF中查看:
http://jakewheat.github.io/sql-overview/sql-2008-foundation-grammar.html#window-frame-preceding
<window frame preceding> ::=
<unsigned value specification> PRECEDING
<unsigned value specification>
不允许使用表达式。允许绑定参数,顺便说一句。