gpt4 book ai didi

sql - 查询以求和以前的值

转载 作者:行者123 更新时间:2023-12-01 12:35:13 25 4
gpt4 key购买 nike

我有如图所示的表格结构 actual data and the result expected .

我需要将值添加到先前值的总和中(显示在 REQUIRED RESULT 中)
我尝试使用以下查询

SELECT empid,
sum(tot_hours) OVER (PARTITION BY empid ORDER BY empid ) AS tot_hours
FROM empDet
ORDER BY empid

但我得到以下结果集

the result for the given query

但我需要第一张图片中的结果。

任何人都可以帮助我这样做吗?

最佳答案

sum(tot_hours) OVER (PARTITION BY empid ORDER BY empid ) AS tot_hours



您的 ORDER BY 是不正确的。如果您想要 运行 SUM TOT_HOURS ,那么您应该按 tot_hours 订购。

例如,下面的查询将计算每个部门员工的工资总和:
SQL> SELECT deptno,
2 sal,
3 SUM(sal) OVER (PARTITION BY deptno ORDER BY sal ) AS tot_sal
4 FROM emp
5 ORDER BY deptno;

DEPTNO SAL TOT_SAL
---------- ---------- ----------
10 1300 1300
10 2450 3750
10 5000 8750
20 800 800
20 1100 1900
20 2975 4875
20 3000 10875
20 3000 10875
30 950 950
30 1250 3450
30 1250 3450
30 1500 4950
30 1600 6550
30 2850 9400

14 rows selected.

SQL>

更新 对于 重复值 ,运行总数将是重复的。要使其独一无二,请使用 无界先行 条款。例如,
SQL> SELECT empno, deptno,
2 sal,
3 SUM(sal) OVER (PARTITION BY deptno ORDER BY sal ROWS UNBOUNDED PRECEDING) AS tot_sal
4 FROM emp
5 ORDER BY deptno;

EMPNO DEPTNO SAL TOT_SAL
---------- ---------- ---------- ----------
7934 10 1300 1300
10 1300 2600
7782 10 2450 5050
7839 10 5000 10050
7369 20 800 800
7876 20 1100 1900
7566 20 2975 4875
7788 20 3000 7875
7902 20 3000 10875
7900 30 950 950
7521 30 1250 2200
7654 30 1250 3450
7844 30 1500 4950
7499 30 1600 6550
7698 30 2850 9400

15 rows selected.

SQL>

关于sql - 查询以求和以前的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30449895/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com