首页 > 解决方案 > mysql中Window函数实现遇到语法错误

问题描述

我正在尝试执行以下窗口函数的实现

SELECT employee_no, employee_name, department_no, 
       round(avg(salary) OVER(PARTITION BY e.department_no),2) AS dept_avg_salary, 
       salary as salary_of_employee 
FROM employee e 
WHERE e.department_no is not null and salary > (select avg(salary) 
                from employee e2 
                where e2.department_no = e.department_no 
                groupby e2.department_no
               );

遇到错误 1064。

请帮忙

标签: mysqlsql

解决方案


由于 Gordon 已更正语法错误,因此我将更正子查询:

select avg(e2.salary) 
from employee e2 
where e2.department_no = e.department_no 

您已经将子查询与外部查询相关联,因此您不需要使用GROUP BY.

所以,最后where的条款sub-query将是:

WHERE e.salary > (select avg(e2.salary) 
                  from employee e2 
                  where e2.department_no = e.department_no 
                 );

推荐阅读