sql >> Base de Datos >  >> RDS >> PostgreSQL

Cree una lista de todos los días del mes y divida el valor por igual para cada día

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
  1. 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)
  2. Generar una serie de fechas desde el principio hasta el final de un mes
  3. 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í