demostración:db<>fiddle
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
- Cálculo del último día del mes (suma un mes al primero del mes para obtener el primer día del próximo mes, réstale un día)
- Generar una serie de fechas desde el principio hasta el final de un mes
- La unión de sus datos con la serie generada ya duplicó los valores de costos, los cuales solo deben dividirse por el conteo de días de cada mes, que es lo que hace el
COUNT()
la función de ventana hace aquí