2017-12-26 31 views
1

쿼리 내가 하나의 열이있는 다음 테이블이

Z_NUM 
-------- 
34545 
345 
656 
32 
42 
... 

나는 쿼리를 기반으로 다음과 같은 의존

i | SUM(Z_NUM) 
---------------- 
2 | 40934 
3 | 51244 
4 | 54793 
... 

을 구축하고자 SELECT SUM(z_num) FROM table WHERE z_num < i;

변수 i은 매개 변수이며 1 씩 증가해야합니다. ORACLE에서이 쿼리를 구현하는 방법은 무엇입니까? 내가 MYSQL에서이 일을한다면

, 나는

SELECT 
    ​@n := @n + 1 n, 
    SUM(z_num) 
FROM table, (SELECT @n := 1) m 
WHERE z_num < n; 

같은 것을 쓴다 그러나 불행하게도 그것은 오라클 PL/SQL에서 작동하지 않습니다.

+2

어느 데이터베이스에서나 커서의 순서를 제공하는 열이 필요합니다. –

답변

0

개 사용 부질 : connect by

  • 한 각 i

SELECT i, 
     ( SELECT coalesce(sum(z_num), 0) 
      FROM table1 WHERE z_num < i 
     ) as myresult 
FROM (
    SELECT level+1 As i FROM dual 
    CONNECT BY LEVEL <= (SELECT max(Z_NUM) FROM table1)-1 
) 
ORDER BY i 

대한 합을 계산하는 N

  • 에 번호를 다른 dependend 부질 2에서 i를 생성 데모 : http://sqlfiddle.com/#!4/c460c/5

  • 0

    사용 ROWNUM,

    SELECT SUM(z_num) 
        FROM (SELECT z_num, rownum rown 
          FROM table) 
    WHERE z_num < rown; 
    

    또는

    SELECT SUM(z_num) 
        FROM (SELECT z_num, rownum rown 
          FROM table) 
    WHERE rown < 10; 
    
    0

    이 시도 :

    SELECT i, 
        ( SELECT coalesce(sum(z_num), 0) 
         FROM Table_NUM WHERE ROWNUM <= i 
        ) as SUM(Z_NUM) 
    FROM (
         SELECT level+1 As i FROM dual 
         CONNECT BY LEVEL <= (SELECT Max(ROWNUM) FROM Table_NUM)-1 
        ) 
    ORDER BY i; 
    

    결과 :

    I  SUM_RESULT 
    ----------------- 
    2  34890 
    3  35546 
    4  35578 
    5  35620 
    

    이 될 수있다 도와주세요.