Where The Streets Have No Name

SQL의 기본 함수만 사용하여 누적곱을 구하는 방법 본문

Developement/DataBase

SQL의 기본 함수만 사용하여 누적곱을 구하는 방법

highheat 2006. 12. 22. 15:54

1. 적용원리  

. 임의의 숫자의 곱을 숫자의 합 형태로 변경한다.     
- e^(ln X) = X     
- e^(ln X + ln Y) =   e^(ln (X * Y))  = X * Y

2. 샘플

CREATE TABLE test(
id number,
col1 number);

INSERT INTO test VALUES(1, 5);
INSERT INTO test VALUES(2, 10);
INSERT INTO test VALUES(3, 7);
INSERT INTO test VALUES(4, 10);


SQL> SELECT id, col1, EXP(m) multiply    
     FROM (        
         SELECT id, col1, SUM(LN(col1)) OVER (ORDER BY id) m  
         FROM test    
     );

        ID       COL1   MULTIPLY
---------- ---------- ----------
         1          5          5
         2         10         50
         3          7        350
         4         10       3500
        


        

SQL> SELECT EXP(SUM(LN(col1)))
     FROM test ;

EXP(SUM(LN(COL1)))
------------------
              3500

Ithe ln function returns the natural logarithm of a number.