Postgres 在具有 OVER 子句的查询中报告 "window function call requires an OVER clause"

Postgres reporting "window function call requires an OVER clause" in a query that has an OVER clause

我有 table、mee_id 列、first_namelast_name。 (还有一些其他列,但我只是想弄清楚 window 函数的内容。)当我尝试进行查询并为给定 table 中挑选名字值时 e_id 价值:

SELECT e_id, first_value(first_name), first_value(last_name)
  OVER (PARTITION BY e_id)
  FROM me

我收到 "window function call requires an OVER clause" 错误。现在,就像我说的,我还不知道我在做什么,但我很确定至少在该查询中尝试了 OVER 子句。好的,所以当我在没有功能的情况下尝试时:

SELECT e_id, first_name, last_name
  OVER (PARTITION BY e_id)
  FROM me

我在 OVER 处遇到语法错误。我是针对 9.1.13 服务器的 运行 psql 版本 9.4.4。我正在盯着 9.1 的文档看,在我看来那里记录了 OVER。我只是缺少一些基本的东西吗?

每个 window 函数必须有自己的 OVER 子句。您的第一个查询的问题是 first_value(first_name) window 函数没有 OVER 子句。

你的第二个查询的问题是你有一个 OVER 子句,它前面没有 window 函数。

试试这个

SELECT e_id, 
  first_value(first_name) OVER (PARTITION BY e_id), 
  first_value(last_name) OVER (PARTITION BY e_id)
FROM me