database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
ㆍOracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
Oracle Q&A 41490 게시물 읽기
No. 41490
누적합계 구하는 쿼리 질문 드립니다.
작성자
하하하하
작성일
2017-12-04 17:27:45
조회수
616

순번 금액

1 500

2 -1000

3 1000

4 500

5 -4000

6 1000

 

이런식으로 데이터가 있으면

로우 순서대로 합계를 계산하는데

결과가 음수가 나오면 결과값 0으로 다음 로우와 계산하는 쿼리를 구현하고싶습니다.

 

ex) 1,2번 500 - 1000 = -500 ->0

-500은 음수는 이므로 0 + 1000(3번로우) =1000

1000 + 500 = 1500

1500 -4000 = -2500 -> 0

0+1000

최종결과 1000

 

구현이 가능한지 가능하다면 어떤식으로 해야될지 ...

 

 

이 글에 대한 댓글이 총 1건 있습니다.

WITH t AS
(
SELECT 1 seq, 500 amt FROM dual
UNION ALL SELECT 2, -1000 FROM dual
UNION ALL SELECT 3,  1000 FROM dual
UNION ALL SELECT 4,   500 FROM dual
UNION ALL SELECT 5, -4000 FROM dual
UNION ALL SELECT 6,  1000 FROM dual
)
-- Recursive SQL (11G)
, t1(seq, amt, v) AS
(
SELECT seq
     , amt
     , GREATEST(amt, 0) v
  FROM t
 WHERE seq = 1
 UNION ALL
SELECT a.seq
     , a.amt
     , GREATEST(b.v + a.amt, 0) v
  FROM t a
     , t1 b
 WHERE a.seq = b.seq + 1
)
SELECT * FROM t1
;


WITH t AS
(
SELECT 1 seq, 500 amt FROM dual
UNION ALL SELECT 2, -1000 FROM dual
UNION ALL SELECT 3,  1000 FROM dual
UNION ALL SELECT 4,   500 FROM dual
UNION ALL SELECT 5, -4000 FROM dual
UNION ALL SELECT 6,  1000 FROM dual
)
-- MODEL (10G)
SELECT *
  FROM t
 MODEL
 DIMENSION BY (seq)
 MEASURES (amt, 0 v)
 IGNORE NAV
 RULES
 AUTOMATIC ORDER
 ( v[ANY] = GREATEST(v[CV()-1] + amt[CV()], 0) )
;

http://www.gurubee.net/lecture/2203

마농(manon94)님이 2017-12-04 19:12:49에 작성한 댓글입니다.
이 댓글은 2017-12-04 19:20:12에 마지막으로 수정되었습니다.
[Top]
No.
제목
작성자
작성일
조회
414949억건 업테이트와 인서트
엑소
2017-12-13
529
41493오라클 복구 여부 확인좀 부탁드립니다. [1]
복구확인
2017-12-12
481
41492rownum 구간 null row까지 전부 표현 가능한가요? [2]
김기훈
2017-12-11
511
41490누적합계 구하는 쿼리 질문 드립니다. [1]
하하하하
2017-12-04
616
41489샘플스키마 [1]
부글부글
2017-12-04
531
41488연속된 건수 구하는 쿼리 문의 드립니다. [2]
꼬르
2017-11-29
646
41487데이터베이스 공유하기 [1]
이글이글
2017-11-28
582
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2017 DSN, All rights reserved.
작업시간: 0.069초, 이곳 서비스는
	PostgreSQL v9.6.3으로 자료를 관리합니다