データベース積算値クエリー
一、oracle
SUM()OVER()が必要です
結果:
結果として,データはdeptnoで求和されたが,もちろんこのようなデータもサブクエリgroupbyで実現できるが,最後の列のデータは最後から2番目の列に対して累積求和されていない.
結果:
このような結果はdeptnoに従ってパケット積算和を行う.
二、sql server
この方式はoracleの結果と同じで、ここでは展示していません.
これにorder byを加えるとsql serverでエラーが報告され、葛藤し、累積和はサブクエリでしか実現できません
結果:
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
もっといい方法があるかもしれませんが、貴重な意見を歓迎します.
SUM()OVER()が必要です
select empno,deptno,sal,sum(sal) over(partition by deptno) sumvalue
from emp order by deptno,empno;
結果:
7782 10 1200 7500
7839 10 5000 7500
7934 10 1300 7500
7369 20 1100 11175
7566 20 2975 11175
7788 20 3000 11175
7876 20 1100 11175
7902 20 3000 11175
7499 30 1600 9400
7521 30 1250 9400
7654 30 1250 9400
7698 30 2850 9400
7844 30 1500 9400
7900 30 950 9400
結果として,データはdeptnoで求和されたが,もちろんこのようなデータもサブクエリgroupbyで実現できるが,最後の列のデータは最後から2番目の列に対して累積求和されていない.
select empno,deptno,sal,sum(sal) over(partition by deptno order by empno) sumvalue
from emp order by deptno,empno;
結果:
7782 10 1200 1200
7839 10 5000 6200
7934 10 1300 7500
7369 20 1100 1100
7566 20 2975 4075
7788 20 3000 7075
7876 20 1100 8175
7902 20 3000 11175
7499 30 1600 1600
7521 30 1250 2850
7654 30 1250 4100
7698 30 2850 6950
7844 30 1500 8450
7900 30 950 9400
このような結果はdeptnoに従ってパケット積算和を行う.
二、sql server
select empno,deptno,sal,sum(sal) over(partition by deptno) sumValue
from emp order by deptno,empno;
この方式はoracleの結果と同じで、ここでは展示していません.
select empno,deptno,sal,sum(sal) over(partition by deptno order by empno) sumValue
from emp order by deptno,empno;
これにorder byを加えるとsql serverでエラーが報告され、葛藤し、累積和はサブクエリでしか実現できません
select empno,deptno,sal,
(select SUM(SAL) FROM emp innerEmp WHERE innerEmp.deptno=emp.deptno AND innerEmp.empno<=emp.empno) sumValue
from emp
order by emp.deptno,emp.empno;
結果:
7782 10 2450.00 2450.00
7839 10 5000.00 7450.00
7934 10 1300.00 8750.00
7369 20 800.00 800.00
7566 20 2975.00 3775.00
7788 20 3000.00 6775.00
7876 20 1100.00 7875.00
7902 20 3000.00 10875.00
7499 30 1600.00 1600.00
7521 30 1250.00 2850.00
7654 30 1250.00 4100.00
7698 30 2850.00 6950.00
7844 30 1500.00 8450.00
7900 30 950.00 9400.00
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
もっといい方法があるかもしれませんが、貴重な意見を歓迎します.