sql >> Database teknologi >  >> RDS >> PostgreSQL

Opret en liste over alle dage pr. måned og del værdien ligeligt til hver dag

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
  1. Beregning af den sidste dag i måneden (tilføj en måned til den første i måneden for at få den første dag i den næste måned, træk en dag fra den)
  2. Generer en datoserie fra begyndelsen til slutningen af ​​en måned
  3. Forbindelsen af ​​dine data med den genererede serie har allerede duplikeret omkostningsværdierne, som kun skal divideres med antallet af dage i hver måned, hvilket er hvad COUNT() vinduesfunktionen gør her



  1. Sorter efter dato (nyeste)

  2. Sådan arrangeres og grupperes MySQL-resultater

  3. En introduktion til MySQL-implementering ved hjælp af en Ansible-rolle

  4. Hvordan ignorerer man SequelizeUniqueConstraintError i Sequelize?