微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

关于“此处不允许使用群组功能”

如何解决关于“此处不允许使用群组功能”

我有一个包含工作、薪水和日期列的表格。我正在用 PL/sql 编写以下查询,但出现错误

此处不允许使用群组功能

delete employees where date = '06-05-2020 'and avg (salary)> 5500;

我该如何解决这个问题?

解决方法

您的查询毫无意义(至少对我而言)。 平均工资代表什么? 谁的平均工资?

这是一个基于 Scott 的 EMP 表的示例;我将删除 1981 年 12 月 3 日入职的员工,并在员工平均工资高于 2000 的部门工作。

示例数据:

SQL> select deptno,ename,sal,hiredate from emp order by deptno,ename;

    DEPTNO ENAME             SAL HIREDATE
---------- ---------- ---------- ----------
        20 ADAMS            1100 12.01.1983
        20 FORD             3000 03.12.1981   --> this
        20 JONES            2975 02.04.1981
        20 SCOTT            3000 09.12.1982
        20 SMITH             800 17.12.1980
        30 ALLEN            1600 20.02.1981
        30 BLAKE            2850 01.05.1981
        30 JAMES             950 03.12.1981   --> this
        30 MARTIN           1250 28.09.1981
        30 TURNER           1500 08.09.1981
        30 WARD             1250 22.02.1981

11 rows selected.

每个部门的平均工资:

SQL> select deptno,avg(sal) avg_salary
  2  from emp
  3  group by deptno
  4  order by avg_salary desc;

    DEPTNO AVG_SALARY
---------- ----------
        20       2175         --> higher than 2000
        30 1566,66667

所以:我正在寻找在部门 20 工作的员工(因为只有该部门的平均工资高于 2000)并且在 1981 年 12 月 3 日被聘用(James 和 Ford,但只有福特在第 20 部门工作):

SQL> delete from emp
  2  where hiredate = date '1981-12-03'
  3    and deptno in (select deptno
  4                   from emp
  5                   group by deptno
  6                   having avg(sal) > 2000
  7                  );

1 row deleted.

福特还在那里吗?

SQL> select * From emp where ename = 'FORD';

no rows selected

SQL>

不,已删除。


现在轮到你了。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。