select to_char(mytime,'yyyymmddhh24mi'), sum(value) from mytable group by to_char(mytime, 'yyyymmddhh24mi');
이렇게 해서 1분단위로 합산해서 데이터를 가져오는데....
저는 5분 단위로 합산해서 가져올려고 하는데....어떻게 해야 되죠?(데이터를 초 단위로 들어 갑니다.)
하루 24시간을 5분단위로 끊어서 테이블을 만듭니다.
key low up desc
-------- ---- ---------
0000 0000 0004 0시 0분
0005 0005 0009 ....
.....
00055 2355 0059 23시 55분
그다음 아래와 같이 합니다.
select
to_char(mytable.mytime,"YYYYMMDD"),
key,
sum(mytable.values)
from mytable, timetable
where to_char(mytable.mytime,"HH24MI")
between timetable.low
and timetable.up
group by
timetable.key
또다른 방법으로는
select to_char(mytable.mytime,"YYYYMMDD"),
trunc(to_numer(to_char(mytable.mytime,"HH24MI"))/5),
from mytable
trunc(to_numer(to_char(mytable.mytime,"HH24MI"))/5)
이건 한방이긴 한데 무자게 느릴겁니다.
select to_char(mytime, 'yyyymmddhh24') || lpad((trunc(to_char(mytime, 'mi')/5)+1)*5, 2, '0') as newtime, sum(value)from mytablegroup to_char(mytime, 'yyyymmddhh24') || lpad((trunc(to_char(mytime, 'mi')/5)+1)*5, 2, '0')
이렇게 하면 될거 같아요
이렇게 하면.. 시간대가..
0분~5분 -> 5분
6분~10분 -> 10분
.
56분~60분 -> 60분
이런식으로 바뀔겁니다..
그담에 group하면...
5분 단위로 묶을수가 있겟져