3

日付{yyyy/mm / dd}と時刻{h、m、s}と温度{float}を個別の列として含むデータセットがあります。

毎日の気温の値を平均関数で集計したい。

{h,m, (0-5)s}問題は、時間属性をクエリして、たとえば集計と{h,m, (5-10)s}and{h,m, (10-15)s}と...を自動的に実行する方法がわからないことです。

4

1 に答える 1

2
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
;

あなたの質問の重要な部分は、秒を範囲サイズで割った整数の結果でグループ化することだと思います。

于 2012-09-27T13:45:51.003 に答える