Postgres在具有OVER子句的查询中报告“窗口函数调用需要OVER子句”

时间:2015-07-30 15:14:50

标签: postgresql postgresql-9.1 window-functions

我有一张表me,其中包含e_id列,first_namelast_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遇到语法错误。我正在针对9.1.13服务器运行psql版本9.4.4。我正盯着9.1的文档,它看起来就像在那里记录了OVER。我只是遗漏了一些基本的东西吗?

1 个答案:

答案 0 :(得分:2)

每个窗口函数都必须有自己的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