date_trunc()
を使用します
タイムスタンプを月に切り捨て、年と月の両方を1つの列でカバーします。 to_char()
を使用できます 好きなようにフォーマットします。
補足の質問で言及した実行カウントを取得するには、ウィンドウ関数<を追加します。 / a> :
SELECT to_char(date_trunc('month', period_start), 'Mon YYYY') AS month
, count(*) AS month_ct
, sum(count(*)) OVER (ORDER BY date_trunc('month', period_start)) AS running_ct
FROM activity_log
WHERE action = 'create_entry'
GROUP BY date_trunc('month', period_start);
sqlfiddle
Psotgres9.6の場合
db <> fiddle こちら
Postgres12の場合
ウィンドウ関数は後に実行されます 集計関数。これにより、同じクエリレベルの集計に対してウィンドウ関数を実行できます。関連:
ウィンドウ関数とGROUP BY
で同じ基本式を使用することが不可欠です。 :date_trunc('month', period_start)
。