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

标签 postgresql postgresql-9.1 window-functions

我有一张 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/

相关文章:

sql - 在值子查询中指定列的数据类型

sql - 避免 CurrentAccountBalance 更新时出现 SQL 死锁

postgresql - 对表格的每 3 行求和

SQL 组表按 "leading rows"没有 pl/sql

python - 获取某列的 "circular lag"

mysql - Postgresql 中用户权限的最佳实践?

java - 是否可以创建一个准备好的语句并稍后在 postgres 下使用 Java 重用它?

postgresql - 名为 "postgres"的数据库

database - postgresql使用通配符截断级联表

postgresql-9.1 - postgresql - 选择西里尔文本(utf-8)时如何对齐列?