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 40207 게시물 읽기
No. 40207
특정구간별 합계구하기 문의합니다.
작성자
우암(uami)
작성일
2013-07-24 01:43
조회수
7,390

 

SEQ   CODE     AMT

1    100    10000
2    200    3000
3    901    1000
4    300    2000
5    400    1000
6    902    100
7    201     400
8    901     500
9    200     1000
.    .         .
.    .         .
.    .         ,

특정코드사이의 합계를 구하려고 합니다.   시작코드가 901 끝코드가 902 사이에 있는 값에 대해서만 합계를 구하고 싶은데 잘안되네요

시작이 901로 시작만 하고 902가 없을수도 있습니다.  901시작과 902끝이 여러번 반복해서 나올수도 있습니다.

즉 구하고 싶은건 구간안에 있는 901과 902사이의 합계과 맨마지막 901이후의 합계입니다.

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

WITH t AS
(
SELECT 1 seq, 100 code, 10000 amt FROM dual
UNION ALL SELECT 2, 200, 3000 FROM dual
UNION ALL SELECT 3, 901, 1000 FROM dual
UNION ALL SELECT 4, 300, 2000 FROM dual
UNION ALL SELECT 5, 400, 1000 FROM dual
UNION ALL SELECT 6, 902,  100 FROM dual
UNION ALL SELECT 7, 200,  400 FROM dual
UNION ALL SELECT 8, 901,  500 FROM dual
UNION ALL SELECT 9, 200, 1000 FROM dual
)
SELECT MIN(seq) min_seq
     , MAX(seq) max_seq
     , SUM(amt) amt
  FROM (SELECT seq, code, amt
             , SUM(flag) OVER(ORDER BY seq) grp
          FROM (SELECT seq, code, amt
                     , CASE WHEN code = 901 THEN 1
                            WHEN LAG(code) OVER(ORDER BY seq) = 902 THEN 1
                       ELSE 0 END flag
                  FROM t
                )
        )
 GROUP BY grp
HAVING MAX(code) IN (901, 902)
 ORDER BY grp
;

마농(manon94)님이 2013-07-24 09:51에 작성한 댓글입니다.

대단히 감사합니다..도움이 많이 되었습니다.

우암(uami)님이 2013-07-24 10:31에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
40210질문 드립니다. 도와주세요.ㅡㅡ [1]
야간비행
2013-07-27
5533
40209동적쿼리를 oracle 원래 문법으로 표현이 안되나요? [1]
김지운
2013-07-26
6000
40208데이터 베이스 export 하였는데 이런 에러가 나네요. 이런 경우는 언제 나는 경우인가요? [1]
김정은
2013-07-26
7510
40207특정구간별 합계구하기 문의합니다. [2]
우암
2013-07-24
7390
40206일부분씩 평균을 내는 방법 문의 [4]
HaHa
2013-07-23
6233
40205오라클 날짜 구하기 문의 드립니다. [1]
초보
2013-07-23
6312
402041시간 반 전을 어떻게 표현해야 하나요? [2]
화악산
2013-07-23
6013
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.017초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다