次のクエリがあります。
WITH t as (
SELECT date_trunc('hour', time_series) as trunc
FROM generate_series('2013-02-27 22:00'::timestamp, '2013-02-28 2:00',
'1 hour') as time_series
GROUP BY trunc
ORDER BY trunc
)
SELECT DISTINCT ON(trunc) trunc, id
FROM t
LEFT JOIN (
SELECT id, created, date_trunc('hour', created) as trunc_u
FROM event
ORDER BY created DESC
) u
ON trunc = trunc_u
次の結果が得られます。
"2013-02-27 22:00:00";
"2013-02-27 23:00:00";2
"2013-02-28 00:00:00";5
"2013-02-28 01:00:00";
"2013-02-28 02:00:00";
テーブルevent
にはid
、created
および他のいくつかの列がありますが、ここで関連するのはそれらだけです。上記のクエリはid
、特定の期間ごとに生成された最後のイベントを提供します (期間ごとに適切な集計が得られたtrunc
おかげです)。DISTINCT ON
現在、このクエリはNULL
、特定の期間にイベントが発生しなかった場合に生成されます。id
期間が異なっていても、以前の available を返したいと思います。すなわち:
"2013-02-27 22:00:00";0
"2013-02-27 23:00:00";2
"2013-02-28 00:00:00";5
"2013-02-28 01:00:00";5
"2013-02-28 02:00:00";5
これを達成するための簡単な方法が欠けていると確信しています。何かアドバイス?