我有一张 table ,me
,有一个 e_id
列,a first_name
,以及 last_name
。 (还有其他一些列,但我只是想弄清楚窗口函数的内容。)当我尝试执行查询并挑选出表中给定 e_id
的名字值时值:
SELECT e_id, first_value(first_name), first_value(last_name)
OVER (PARTITION BY e_id)
FROM me
我收到“窗口函数调用需要 OVER 子句”错误。现在,就像我说的,我还不知道我在做什么,但我很确定该查询中至少尝试过 OVER 子句。好的,所以当我在没有功能的情况下尝试它时:
SELECT e_id, first_name, last_name
OVER (PARTITION BY e_id)
FROM me
我在 OVER 时遇到语法错误。我正在运行psql
版本 9.4.4 针对 9.1.13 服务器。我正在盯着 9.1 的文档,在我看来,那里记录了 OVER。我只是错过了一些基本的东西吗?
最佳答案
每个窗口函数必须有自己的OVER
子句。第一个查询的问题是 first_value(first_name)
窗口函数没有 OVER
子句。
第二个查询的问题是您有一个 OVER
子句,该子句前面没有窗口函数。
试试这个
SELECT e_id,
first_value(first_name) OVER (PARTITION BY e_id),
first_value(last_name) OVER (PARTITION BY e_id)
FROM me
关于postgresql - Postgres 在具有 OVER 子句的查询中报告 "window function call requires an OVER clause",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31727641/