SELECT
gs::date,
costs / COUNT(*) OVER (PARTITION BY entry_date) -- 3
FROM costs,
generate_series( -- 2
entry_date,
entry_date + interval '1 month - 1 day', -- 1
interval '1 day'
) gs
- 月の最終日の計算(月の最初に月を追加して翌月の最初の日を取得し、そこから1日を減算します)
- 月の初めから終わりまでの一連の日付を生成します
- 生成されたシリーズとデータを結合すると、コスト値がすでに複製されています。コスト値は、各月の日数で割るだけで済みます。これが
COUNT()
です。 ウィンドウ関数はここで行います