1

私は小さな PostgreSQL クエリを作成しました。これは、2 つの特定の日付内で毎日 1 時間ごとに実行されるジョブの合計量を計算するのに役立ちます。 2 月 2 日と 3 月 3 日に指定された時間で終了 - このクエリは 0 カウントの行を出力しないことに気付きました - その時間間隔内に実行されたジョブはありません。これを0カウントの結果(行)も返すようにするにはどうすればよいですか? コードは次のとおりです。

SELECT date_trunc('hour', executiontime), count(executiontime)
  FROM mytable
 WHERE executiontime BETWEEN '2011-2-2 0:00:00' AND '2012-3-2 5:00:00' 
 GROUP BY date_trunc('hour', executiontime)
 ORDER BY date_trunc('hour', executiontime) ASC;

前もって感謝します。

4

2 に答える 2

1
        -- CTE to the rescue!!!
WITH cal AS (
        SELECT generate_series('2012-02-02 00:00:00'::timestamp , '2012-03-02 05:00:00'::timestamp , '1 hour'::interval) AS stamp
        )
, qqq AS (
        SELECT date_trunc('hour', executiontime) AS stamp
        , count(*) AS zcount
        FROM mytable
        GROUP BY date_trunc('hour', executiontime)
        )
SELECT cal.stamp
        , COALESCE (qqq.zcount, 0) AS zcount
FROM cal
LEFT JOIN qqq ON cal.stamp = qqq.stamp
ORDER BY stamp ASC
        ;
于 2012-08-01T14:42:40.350 に答える
0

これを見てください。アイデアは、この期間の日付で配列またはテーブルを生成し、ジョブ実行テーブルと結合することです。

于 2012-08-01T14:28:08.860 に答える