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