日付{yyyy/mm / dd}と時刻{h、m、s}と温度{float}を個別の列として含むデータセットがあります。
毎日の気温の値を平均関数で集計したい。
{h,m, (0-5)s}
問題は、時間属性をクエリして、たとえば集計と{h,m, (5-10)s}
and{h,m, (10-15)s}
と...を自動的に実行する方法がわからないことです。
日付{yyyy/mm / dd}と時刻{h、m、s}と温度{float}を個別の列として含むデータセットがあります。
毎日の気温の値を平均関数で集計したい。
{h,m, (0-5)s}
問題は、時間属性をクエリして、たとえば集計と{h,m, (5-10)s}
and{h,m, (10-15)s}
と...を自動的に実行する方法がわからないことです。
select
day,
to_char(date_trunc('minute', "time"), 'HH24:MI') as "minute",
extract(second from "time")::integer / 5 as "range",
avg(temperature) as average
from (
select d::date as day, d::time as "time", random() * 100 as temperature
from generate_series('2012-01-01', '2012-01-03', '1 second'::interval) s(d)
) d
group by 1, 2, 3
order by 1, 2, 3
;
すべての日の平均が必要な場合:
select
to_char(date_trunc('minute', "time"), 'HH24:MI') as "minute",
extract(second from "time")::integer / 5 as "range",
avg(temperature) as average
from (
select d::time as "time", random() * 100 as temperature
from generate_series('2012-01-01', '2012-01-03', '1 second'::interval) s(d)
) d
group by 1, 2
order by 1, 2
;
あなたの質問の重要な部分は、秒を範囲サイズで割った整数の結果でグループ化することだと思います。