Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 求sal的平均值,然后按降序排序_Sql_Oracle_Aggregate Functions - Fatal编程技术网

Sql 求sal的平均值,然后按降序排序

Sql 求sal的平均值,然后按降序排序,sql,oracle,aggregate-functions,Sql,Oracle,Aggregate Functions,我想列出所有收入高于平均工资的员工。我有点迷路了。我需要把所有的薪水加起来,然后平均出来,只显示那些比平均工资高的。在这件事上我需要很多帮助 我的问题不起作用 SQL> select empno, ename, job, hiredate, sal, deptno from emp where sal avg(sal); select empno, ename, job, hiredate, sal, deptno from emp where sal avg(sal)

我想列出所有收入高于平均工资的员工。我有点迷路了。我需要把所有的薪水加起来,然后平均出来,只显示那些比平均工资高的。在这件事上我需要很多帮助

我的问题不起作用

 SQL> select empno, ename, job, hiredate, sal, deptno from emp where sal avg(sal);
 select empno, ename, job, hiredate, sal, deptno from emp where sal avg(sal)
                                                               *
 ERROR at line 1:
 ORA-00920: invalid relational operator
 SQL>
桌子


您将获得无效的关系运算符错误,因为您忽略了小于 登录您的查询。请学习阅读

除此之外,您还需要编写一个子查询来计算平均工资。因此,您的查询应该如下所示:

select empno, ename, job, hiredate, sal, deptno 
from emp 
where sal > (select  avg(sal) from emp)
order by sal desc;
Oracle不支持吗?我不确定是否可以在WHERE子句中直接使用窗口函数,但至少可以从使用它的查询派生一个表,然后在条件中引用相应的列:

SELECT
  empno, ename, job, hiredate, sal, deptno
FROM (
  SELECT
    empno, ename, job, hiredate, sal, deptno
    AVG(sal) OVER () AS avgsal
  FROM emp
) s
WHERE sal > avgsal
SELECT
  empno, ename, job, hiredate, sal, deptno
FROM (
  SELECT
    empno, ename, job, hiredate, sal, deptno
    AVG(sal) OVER () AS avgsal
  FROM emp
) s
WHERE sal > avgsal