안녕하세요
고민해보다 몰라서 질문드립니다
varchar2
200912151900 51.3742
200912151901 51.3624
200912151902 51.3498
200912151903 51.3340
200912151904 51.3249
200912151905 51.3192
200912151906 51.3096
200912151907 51.3069
200912151908 51.3127
200912151909 51.3158
200912151910 51.3062
200912151911 51.2937
200912151912 51.2888
...
201812292358 51.2345
201812292359 51.3363
이런식으로 데이터가 구성되어있습니다.
n분단위로 나눠서 합계를 더해야 합니다
만약 2분 단위일 때는
200912151900 51.3742
200912151901 51.3624
200912151902 51.3498
200912151903 51.3340
...
~
201812292358 51.2345
201812292359 51.3363
과 같이 구성 되어 있습니다
200912151900 102.7366
200912151902 102.6838
...
200912191902 102.6838
으로 나와야 합니다.
시작은 '20091215' 같은 형태로 주어집니다.
만약에 5분단위로 하고 +4일(고정) 후로 하면
시작시점이 20091215일 00시00분이면 끝인 날짜는 + 4일 인 20091219일 2355 로 끝나야 합니다.
읽어주셔서 감사합니다.
본문에 내용이 부족해 추가하였습니다.
보기 편하시게 여기도 덧붙입니다.
시작은 '20091215' 같은 형태로 주어집니다.
만약에 5분단위로 하고 +4일 후(고정)로 하면
시작시점이 20091215일 00시00분이면 끝인 날짜는 + 4일 인 20091219일 2355 로 끝나야 합니다.
http://www.gurubee.net/article/60407 를 참고하니 하루는 되는데 n일 후까지를 구하고 싶습니다.
WITH t AS ( SELECT '200912151900' dt, 51.3742 v FROM dual UNION ALL SELECT '200912151901', 51.3624 FROM dual UNION ALL SELECT '200912151902', 51.3498 FROM dual UNION ALL SELECT '200912151903', 51.3340 FROM dual UNION ALL SELECT '200912151904', 51.3249 FROM dual UNION ALL SELECT '200912151905', 51.3192 FROM dual UNION ALL SELECT '200912151906', 51.3096 FROM dual UNION ALL SELECT '200912151907', 51.3069 FROM dual UNION ALL SELECT '200912151908', 51.3127 FROM dual UNION ALL SELECT '200912151909', 51.3158 FROM dual UNION ALL SELECT '200912151910', 51.3062 FROM dual UNION ALL SELECT '200912151911', 51.2937 FROM dual UNION ALL SELECT '200912151912', 51.2888 FROM dual ) SELECT b.sdt , SUM(a.v) v FROM t a , (SELECT TO_CHAR(dt + (LEVEL-1)*mi * 1/24/60, 'yyyymmddhh24mi') sdt , TO_CHAR(LEAST(dt + LEVEL*mi * 1/24/60, dt + 4 + 1), 'yyyymmddhh24mi') edt FROM (SELECT TO_DATE('20091215', 'yyyymmdd') dt , 2 mi FROM dual ) CONNECT BY dt + (LEVEL-1)*mi * 1/24/60 < dt + 4 + 1 ) b WHERE a.dt >= b.sdt AND a.dt < b.edt GROUP BY b.sdt ORDER BY sdt ;