2

PostgresでGROUP BY分ステートメントをどのように実行しますか? また、欠落しているレコードがゼロに置き換えられる場合はどうなるのだろうか?

SELECT avg(load) as load, min(created_at) as create_at FROM stats GROUP BY ?what here?

したがって、次のような行が得られます。

   created_at   | load
27.3.2013 16:08 | 15
27.3.2013 16:09 | 14
27.3.2013 16:10 | 16
27.3.2013 16:12 | 15

レコードが 1 つ欠落しています、注意してください

27.3.2013 16:11 | 0

デフォルト値を設定する方法またはこれはどのように呼び出されますか?

4

1 に答える 1

1

必要なすべての分を含むセットに参加する必要があります。これには generate_series(start, stop, step) を使用できます。次のようになります。

SELECT avg(load), min(created_at) as load 
FROM generate_series('2013-3-20 0:00:00'::timestamp, '2013-3-30 0:00:00', 
              '1 minute') AS minutes(minute)
    LEFT JOIN stats ON minute=date_trunc('minute', stats.created_at)
GROUP BY minute
于 2013-03-27T19:58:49.393 に答える