我是SQL语言和PostgreSQL的新手。我熟悉了这门语言并且正在学习PostgreSQL教程,直到我遇到关于窗口函数的一章(link text。我创建了完全相同的表'empsalary',如示例所示:
wtouw=# SELECT * FROM empsalary; depname | empno | salary -----------+-------+-------- develop | 11 | 5200 develop | 7 | 4200 develop | 9 | 4500 develop | 8 | 6000 develop | 10 | 5200 personnel | 5 | 3500 personnel | 2 | 3900 sales | 3 | 4800 sales | 1 | 5000 sales | 4 | 4800 (10 rows)
并复制粘贴使用窗口函数的第一个语句:
SELECT depname, empno, salary, avg(salary) OVER (PARTITION BY depname) FROM empsalary;
但是,我收到以下错误消息:
ERROR: syntax error at or near "OVER" LINE 1: SELECT 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)编译
答案 0 :(得分:4)
您的版本是否可能不支持此功能?
从3.5. Window Functions你使用完全相同的功能
这是一个展示如何操作的示例 比较每个员工的工资 他或她的平均工资 部门:
SELECT depname,empno,salary, 平均(工资)超过(PARTITION BY depname)FROM empsalary;
但是它说明了
PostgreSQL 8.4.1文档