1
2
3
4
이름 널        유형           
-- -------- ------------ 
A  NOT NULL VARCHAR2(10
B           NUMBER       
cs

 

1
SELECT * FROM TEST01;
cs

다음과같은 원본데이터에 값의 누계를 구하고 싶다면 ?

 

1) 오라클 분석함수를 이용하여 구하기

1
2
SELECT  A AS "코드", B AS "값" , SUM(B) OVER (ORDER BY B) AS "누계값"
FROM TEST01;
cs

 

 

2) 부등호 조인을 이용하여 구하기

1
2
3
4
5
6
7
8
SELECT 
        X.A
      , X.B
      , Y.B
FROM TEST01 X
   , TEST01 Y
WHERE Y.A <=X.A
  AND X.A <= '00012';
cs

 

둘중하나를 다른 쪽보다 작거나 같다로 조건으로 조인을 걸어준결과 1건의 행에 대해 자신의 A컬럼 값보다 작거나 같은 행들의 수 만큼 행들이 연결된다.

GROUP BY 를 하고 B_1 값을 SUM해준다.

 

1
2
3
4
5
6
7
8
9
10
SELECT 
        X.A
      , X.B
      , SUM(Y.B) ACC
FROM TEST01 X
   , TEST01 Y
WHERE Y.A <=X.A
  AND X.A <= '00012'
GROUP BY X.A
      , X.B ;
cs

 

 

 

출처 : 전문가로 가는 길 오라클 실습 (이채남님 저서)

 

'DataBase' 카테고리의 다른 글

소계와 합계 구하는 방법 (1)  (0) 2015.12.17
프로시져란 (PROCEDURE) ?  (0) 2015.12.16
COPY_T 테이블이란?  (0) 2015.12.16
누계를 구하는 방법에 대하여 (2)  (0) 2015.12.14
SUBSTR 함수  (0) 2015.12.09
블로그 이미지

클라인STR

,