demo: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 do último dia do mês (adicione um mês ao primeiro dia do mês para obter o primeiro dia do mês seguinte, subtraia um dia dele)
- Gere uma série de datas do início ao fim de um mês
- A junção dos seus dados com a série gerada já duplicou os valores de custos, que só precisam ser divididos pela contagem de dias de cada mês, que é o que
COUNT()
função de janela faz aqui