어느 가을날의 전환점

ORACLE|1부터 주어진 수까지 누적합 구하기 본문

Database/Oracle

ORACLE|1부터 주어진 수까지 누적합 구하기

어느가을빛 2010. 6. 17. 16:53

* 주어진 값이 5 경우 1+2+3+4+5= 15 결과를 구하는 방법

 

1. Connect By 이용한 방법 (큰수가 주어질수록 느려집니다.)

SELECT SUM(LEVEL) FROM dual
CONNECT BY LEVEL <= 5

 

2. 수학 법칙(?) 이용하는 경우

var v_num NUMBER
EXEC :v_num := 1000
SELECT VAL * (VAL + 1) / 2
FROM (SELECT :v_num VAL FROM DUAL)

1+2+3+4+5 
= (1+2+3+4+5 + 5+4+3+2+1) / 2 
= ((1+5)+(2+4)+(3+3)+(4+2)+(5+1)) / 2 
= ((5+1)+(5+1)+(5+1)+(5+1)+(5+1)) / 2 
= (5+1) * 5 / 2

Comments