sql질문입니다.. 0 1 1,316

by 지침 [2015.06.25 13:31:07]


point테이블

idx     points          time

1       1000      1400000000

2       1000      1500000000

3       1000      1600000000

 

이라는 테이블에서 time이 낮은거부터 시작해 2500(임의의값)이라는 값이 들어와

points 의 값을 더해서 같더나 많을때까지만 의 레코트를 뽑아올수있을까요?

레코트를 뽑아오면 

1       1000      1400000000

2       1000      1500000000

3       1000      1600000000

이런값이 나오겠습니다..

 

다른 예로 들어서는 1500(임의의값)이라는 값이 들어오게되면 

1       1000      1400000000

2       1000      1500000000

이 두개의 레코드가 나오도록 하고싶습니다..

 

또 다른 예로는 1000이라는 값이 들어오게되면

1       1000      1400000000

이값만 나오도록하고싶습니다..

 

by 창조의날개 [2015.06.25 15:12:42]

WITH point(idx,     points,          time) AS (
      SELECT 1,       1000,      1400000000 FROM DUAL UNION ALL
      SELECT 2,       1000,      1500000000 FROM DUAL UNION ALL
      SELECT 3,       1000,      1600000000 FROM DUAL
)
SELECT idx,     points,          time
FROM (
      SELECT idx,     points,          time
           , SUM(points) OVER(ORDER BY IDX)-points P_SUM
      FROM POINT
)
WHERE P_SUM < 2000 -- 검색하고자 하는 임의의 값
;

 

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입