[퀴즈] 1부터 주어진 수까지 누적합 구하기 1 7 6,617

by 마농 누적합 [2010.03.26 09:18:19]


[퀴즈] 1부터 주어진 수까지 누적합 구하기

조건으로 입력된 값이 5 인 경우 1 + 2 + 3 + 4 + 5 를 계산하여
결과값 15를 반환하는 쿼리를 작성하세요.

입력변수 :v_num 을 이용해 쿼리를 작성해 보세요.
큰수가 입력된 경우에도 일정한 속도가 나올 수 있도록 작성하시면 좋겠습니다.

SELECT :v_num FROM dual;

정답은 다시 올리겠습니다.

 

by 이재현 [2010.03.26 10:12:24]
마농님 생각나는 단순해서....

커넥트 바이빡에 생각이 안나는데요... 음??

그럼 테이타가 많이지면 속도가 나올라나..

커넥트 바이사용해두 됨? ;;

by 이재현 [2010.03.26 10:19:45]
SELECT SUM(LEVEL) FROM dual
CONNECT BY LEVEL <= 5

이건 아닌거죠 ;;?

by 마농 [2010.03.26 10:26:19]
재현님 80점짜리 답입니다.
10000000(천만)이란 수로 테스트해보니 10g에서 13초정도 걸리는군요.
100점짜리 답을 맞춰보세요.
정답쿼리로는 50 밀리초정도 걸리네요.

by 강정식 [2010.03.26 10:28:16]
var v_num NUMBER
EXEC :v_num := 1000

SELECT VAL * (VAL + 1) / 2
FROM (SELECT :v_num VAL FROM DUAL)
;


by 마농 [2010.03.26 10:30:55]
이번 퀴즈는 정답이 빨리 나왔네요.
강정식님 정답입니다. ^-^

by 마농 [2010.03.26 13:25:44]
이번 퀴즈는 쿼리문제라기 보다는 산수문제였습니다.
순차적인 덧셈 계산을 간단한 수식으로 대체하는것이 포인트였구요.
계산식이 나오는 과정을 예를 들어 풀어보겠습니다.

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

정답은 따로 올리지는 않겠습니다.
강정식님 답글 확인하세요.

by 홍성관 [2011.09.15 13:42:03]
select (1+:v_num)*:v_num/2 from dual
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입