データを時間で集計しようとしています。
データベース:Postgresql 9.0.23
motoテーブル
番号 sirial
出来日 date
出来時刻 timestamp
出来時刻のまま表にすると出来日によって比べにくい為、
5分おきにまとめて集計をしたいと思っています。
with toki as (
select 番号,mod(cast(date_part('minute',出来時刻)::double precision as integer),5) as bt from moto where 出来日=CURRENT_DATE
)
select case toki.bt when 0 then to_char(moto.出来時刻,'HH24:MI')
else moto.出来時刻 + (cast('5 minutes' as interval)-cast('toki.bt minutes' as interval))
end as jikan ,
count(*)
from moto,toki
where moto.番号=toki.番号 and moto.出来日=CURRENT_DATE
group by jikan
order by jikan;
1-5分は 「5分」、6-10分は「10分」にまとめたいと思っています。
with部分で「分」の下1桁を取り出して、5分で割った余りを計算させています。
selectにあるcase部分で、余りがゼロならその値を「時分」表記に。
ゼロ以外なら、あまりから差引して「5」か「10」になるように計算させています。
ですが、どうしてもcast elseの部分にある計算ができません。
ime without time zone と integerの違いで、修正するたびに引っかかり計算が
成り立ちません。
こういった時の計算方法はどうすればよいか、アドバイスをお願いいたします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/03/30 04:46
2021/03/30 05:45 編集