sql >> Databasteknik >  >> RDS >> PostgreSQL

Skapa en lista över alla dagar per månad och dela värdet lika på varje dag

demo:db<>fiol

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. Beräkning av den sista dagen i månaden (lägg till en månad till den första i månaden för att få den första dagen i nästa månad, subtrahera en dag från den)
  2. Skapa en datumserie från början till slutet av en månad
  3. Kombinationen av dina data med den genererade serien duplicerade redan kostnadsvärdena, som bara behöver delas med antalet dagar i varje månad, vilket är vad COUNT() fönsterfunktionen gör här



  1. Laravel:Sådd flera unika kolumner med Faker

  2. Hur man konverterar Unix-epok till en tidsstämpel

  3. Kolumnen ogiltig i urvalslistan eftersom den inte finns i vare sig en aggregatfunktion eller GROUP BY-satsen

  4. Hur gör jag en sammansatt nyckel med SQL Server Management Studio?