Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.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 用于在表中插入薪资部门合计的查询_Sql_Oracle - Fatal编程技术网

Sql 用于在表中插入薪资部门合计的查询

Sql 用于在表中插入薪资部门合计的查询,sql,oracle,Sql,Oracle,假设我有一个表,它的数据是 EMPNO ENAME SAL DEPTNO TOTAL 7839 KING 5000 10 7698 BLAKE 2850 30 7782 CLARK 2450 10 7566 JONES 2975 20 7788 SCOTT 3000 20 7902 FORD 3000 20 7369 SMITH 800 20 7499 ALLEN

假设我有一个表,它的数据是

EMPNO   ENAME   SAL DEPTNO  TOTAL
7839    KING    5000    10
7698    BLAKE   2850    30
7782    CLARK   2450    10
7566    JONES   2975    20
7788    SCOTT   3000    20
7902    FORD    3000    20
7369    SMITH   800     20
7499    ALLEN   1600    30
7521    WARD    1250    30
7654    MARTIN  1250    30
7844    TURNER  1500    30
7876    ADAMS   1100    20
7900    JAMES   950     30
7934    MILLER  1300    10
现在我想在“部门合计”列中插入工资总额

EMPNO   ENAME   SAL DEPTNO  TOTAL
7839    KING    5000    10  8750
7698    BLAKE   2850    30  9400
7782    CLARK   2450    10  8750
7566    JONES   2975    20  10875
7788    SCOTT   3000    20  10875
7902    FORD    3000    20  10875
7369    SMITH   800     20  10875
7499    ALLEN   1600    30  9400
7521    WARD    1250    30  9400
7654    MARTIN  1250    30  9400
7844    TURNER  1500    30  9400
7876    ADAMS   1100    20  10875
7900    JAMES   950     30  9400
7934    MILLER  1300    10  8750
请帮助我,指引我

试试这个:

  Update table_name t2 set t2.TOTAL= (select t1.temp  from 
  (select DEPTNO ,sum(SAL) temp from table_name  group by DEPTNO) t1 where 
  t1.DEPTNO=t2.DEPTNO);

您可以使用分析函数对每个部门分组的进行求和

SQL> SELECT t.empno, t.ename, t.sal, t.deptno,
  2  sum(sal) OVER(PARTITION BY deptno) total
  3  FROM emp t
  4  /

     EMPNO ENAME             SAL     DEPTNO      TOTAL
---------- ---------- ---------- ---------- ----------
      7782 CLARK            2450         10       8750
      7839 KING             5000         10       8750
      7934 MILLER           1300         10       8750
      7566 JONES            2975         20      10875
      7902 FORD             3000         20      10875
      7876 ADAMS            1100         20      10875
      7369 SMITH             800         20      10875
      7788 SCOTT            3000         20      10875
      7521 WARD             1250         30       9400
      7844 TURNER           1500         30       9400
      7499 ALLEN            1600         30       9400
      7900 JAMES             950         30       9400
      7698 BLAKE            2850         30       9400
      7654 MARTIN           1250         30       9400

14 rows selected.

SQL>

您尝试过任何查询吗?尝试使用group by subqueryyes进行更新查询,但由于我尝试在14列中插入三个值,因此出现了缺少表达式的错误。我无法解决此问题。您应该始终发布有问题的try查询,以便其他人知道您尝试了什么,并告诉您问题所在。只需使用分析求和即可函数,看看我的答案。