2013-01-03 54 views
3

谁能告诉我什么是sum在Oracle分区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; 

回答

6

其计算VAL总和每NMS(用于第一个)和EMPNO(第二个)。

先通过+ SUM(VAL)评估该组,然后分析计算该结果。

例如如果你有结果后组由

EMPNO NMS SUM(VAL) 
1  a 15 
1  b 24 
2  a 50 

你必须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) 

你必须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) 
+1

的完整说明,请访问:HTTP ://docs.oracle.com/cd/E11882_01/server.112/e26088/functions004.htm#i81407并在此处:http://docs.oracle.com/cd/E11882_01/server.112/e25554/analysis.htm #DWHSG021 –