use*_*513 3 sql oracle window-functions
任何人都可以在下面的代码片段中告诉我在oracle分区中的sum内部有什么意义sum (SUM(SUM(VAL)))
SELECT NMS,
SUM(SUM(VAL)) OVER(PARTITION BY NMS), ---- SIGNIFICANCE
EMPNO,
SUM(SUM(VAL)) OVER(PARTITION BY EMPNO) ---- SIGNIFICANCE
FROM PART_TEST_PART
GROUP BY NMS, EMPNO;
Run Code Online (Sandbox Code Playgroud)
它计算VAL每个NMS(对于第一个)和EMPNO(对于第二个)的总和.
首先评估组+ SUM(VAL),然后分析计算该结果.
例如,如果你在小组之后得到了结果
EMPNO NMS SUM(VAL)
1 a 15
1 b 24
2 a 50
Run Code Online (Sandbox Code Playgroud)
你必须SUM(SUM(VAL)) OVER(PARTITION BY NMS)为
EMPNO NMS SUM(VAL) SUM(SUM(VAL)) OVER(PARTITION BY NMS)
1 a 15 65 (15+50 for NMS = a)
1 b 24 24 (24 for NMS = b)
2 a 50 65 (15+50 for NMS = a)
Run Code Online (Sandbox Code Playgroud)
你必须SUM(SUM(VAL)) OVER(PARTITION BY EMPNO)为
EMPNO NMS SUM(VAL) SUM(SUM(VAL)) OVER(PARTITION BY EMPNO)
1 a 15 39 (15+24 for EMPNO = 1)
1 b 24 39 (15+24 for EMPNO = 1)
2 a 50 50 (50 for EMPNO = 2)
Run Code Online (Sandbox Code Playgroud)