메뉴 건너뛰기

Dev tips

http://blog.naver.com/hjc426/130037056133http://blog.naver.com/hhihealth/150017470627일별로 금액이 들어가 있는 테이블이 있습니다.

날짜              금액
2006/12/25     100,000
2006/12/26     200,000
2006/12/27     150,000
2006/12/28     250,000
2006/12/29     150,000
2006/12/30     170,000
2006/12/31     190,000
2007/01/01     150,000
2007/01/02     150,000
2007/01/03     140,000
2007/01/04     250,000
2007/01/05     350,000
.....

이 테이블의 1월 금액을 구하려고 합니다.(달력 형태로 표시할려고 합니다.)
단. 구하는 금액은 지정일의 + 3일의 금액을 구해야 합니다.

즉 1월1일칸에 표시 되는 금액은 (1일 + 2일 + 3일) 의 합계가 표시 되어야 합니다.
이렇게 31일까지 출력시키고 싶습니다.

해결 할 수 있는 힌트를 부탁드릴수 있을까요..


SELECT 날짜, 금액,
       SUM(금액) OVER(ORDER BY 날짜
                      RANGE BETWEEN INTERVAL '0' DAY PRECEDING
                                                   AND INTERVAL '2' DAY FOLLOWING) sum_3days
       FROM 테이블



---------------------------------------------------------------------------------
추가문제


테이블이 아래와 같습니다.

table : card_work

date       card_no   work_no   time     amt
============================================
20081010   084124    6321     234352   4000
20081011   123456    3422     101033   2000
20081011   483839    5322     101036   5000
20081011   123456    4333     101038   2000
20081012   483839    5322     024324   5000
20081012   483839    4256     024326   5000
20081012   483839    4256     024327   5000
20081012   334124    3211     021145   3890
20081012   334124    3743     054253   6000


(time 은 varchar2 시분초 로 되어있습니다)

위와 같은 테이블이 있을 때
같은 날짜(date)에 5초 이내(time) 에 처리된(두번이상 row가 생성된)
동일한 카드번호를 가지고 있는 데이터를 뽑아야합니다.


위와 같은 데이터 일때
date       card_no   work_no   time     amt
============================================
20081011   123456    3422     101033   2000
20081011   123456    4333     101038   2000
20081012   483839    5322     024324   5000
20081012   483839    4256     024326   5000
20081012   483839    4256     024327   5000

이런 로우만 출력.(같은 날짜, 같은 카드번호, 시간차이가 5초 이내)


SELECT *
FROM
(
SELECT t.*, COUNT(*) OVER(PARTITION BY card_no -- 같은 카드번호
        ORDER BY TO_DATE(dt||time,'yyyymmddhh24miss') -- 시간 기준
                RANGE        BETWEEN NUMTODSINTERVAL('5','second') PRECEDING                -- 5초전
                        AND NUMTODSINTERVAL('5','second') FOLLOWING                -- 5초후
        ) AS cnt
FROM t
)
WHERE cnt > 1 -- 갯수가 1이상이면 같은 카드번호에서 5초전~5초후 내용이 1개 이상 존재

번호 제목 글쓴이 날짜 조회 수
313 ext3grep – ext3 복구를 쉽게 taknim 2009.06.20 8350
312 구글을 이용한 rapidshare 에 등록된 파일 검색 taknim 2009.06.19 9401
311 폼관련 스크립트 짤때 맨날 인클루드 해서쓰는 함수들 taknim 2009.06.17 7444
310 [객체지향] this / __get() / __set() / clone / autoload / :: taknim 2009.06.12 9251
309 [Oracle] ORA-00600, ORA-06544, ORA-06553 오류 발생시 taknim 2009.06.09 23831
308 [php.ini] auto_prepend_file, auto_append_file 설정 taknim 2009.06.04 11647
307 IE6 에서 SELECT z-index 문제 taknim 2009.06.04 10207
306 리눅스에서 삼바서버 연결하기, 끊기 (mount, umount) taknim 2009.05.29 12319
305 VNC사용시 number keypad숫자가 안 먹을때 taknim 2009.05.29 11947
304 문자열에서 문자 하나하나를 html 형식(&#)으로 변경하기 taknim 2009.05.14 8013
303 이미 설치된 아파치에 rewrite 모듈 추가 설치 taknim 2009.04.30 11878
302 MS-SQL 링크드 서버 만들기 taknim 2009.03.20 12174
» 특정 레코드 앞뒤로 합계 구하기(over,range,PRECEDING,following) taknim 2009.02.05 9909
300 StrConv 함수 - 로케일 변환 taknim 2009.01.30 10790
299 javascript 로 stylesheet 컨트롤할때 키워드 매칭표 taknim 2009.01.22 6783
298 iframe 크기 자동조절 (네이버) - 파이어폭스가능 taknim 2009.01.22 7576
297 POST방식으로 다른 charset Action에 Data 넘겨주는 방법 taknim 2009.01.22 10244
296 mysql 자동 최적화 / 복구 스크립트 taknim 2009.01.16 9793
295 [KISA] mod security 매뉴얼 및 동영상 taknim 2009.01.14 10657
294 유용한 함수 pack, unpack, ip2long, long2ip taknim 2009.01.13 33342