错误:“OVER”处或附近的语法错误

wto*_*ouw 1 sql postgresql

我是 SQL 语言和 PostgreSQL 的新手。我逐渐熟悉了这门语言,并一直在学习 PostgreSQL 教程,直到我陷入有关窗口函数的章节(链接文本)。我创建了完全相同的表“empsalary”,如示例所示:

wtouw=# 从雇员中选择*;
  部门名称 | 员工号 | 薪水
-----------+--------+--------
 开发| 11 | 11 5200
 开发| 7 | 4200
 开发| 9 | 4500
 开发| 8 | 6000
 开发| 10 | 10 5200
 人员 | 5 | 3500
 人员 | 2 | 3900
 销售| 3 | 4800
 销售| 1 | 5000
 销售| 4 | 4800
(10 行)

并复制粘贴使用窗口函数的第一个语句:

SELECT depname、empno、salary、avg(salary) OVER (PARTITION BY depname) FROM empsalary;

但是,我收到以下错误消息:

错误:“OVER”处或附近的语法错误
第 1 行:选择 depname、empno、salary、avg(salary) OVER (PARTITION B...
                                                   ^

使用 OVER 子句的其他努力也没有奏效。我做错了什么?
谢谢。

版本信息:x86_64-pc-linux-gnu 上的 PostgreSQL 8.3.8,由 GCC cc (GCC) 4.2.4 (Ubuntu 4.2.4-1ubuntu3) 编译

Adr*_*der 5

有没有可能是你的版本不支持这个功能?

3.5 开始。窗口函数您使用完全相同的函数

以下示例展示了如何将每个员工的工资与其部门的平均工资进行比较:

SELECT depname、empno、salary、avg(salary) OVER (PARTITION BY depname) FROM empsalary;

但它指出

PostgreSQL 8.4.1 文档

  • astander是正确的,窗口函数在8.4中被引入Postgresql:http://people.planetpostgresql.org/andrew/index.php?/archives/29-First-play-with-window-functions.html (3认同)