sql >> Databáze >  >> RDS >> PostgreSQL

Vytvořte seznam všech dnů v měsíci a rozdělte hodnotu rovnoměrně na každý den

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. Výpočet posledního dne v měsíci (přičtením měsíce k prvnímu v měsíci získáte první den dalšího měsíce, odečtete od něj jeden den)
  2. Vygenerujte datovou řadu od začátku do konce měsíce
  3. Spojení vašich údajů s vygenerovanou řadou již duplikovalo hodnoty nákladů, které je třeba pouze vydělit počtem dní v každém měsíci, což je hodnota COUNT() zde funguje funkce okna



  1. Hardwarové trendy databázového serveru

  2. Vyberte EMP s maximální SAL z každého DEPT

  3. GROUP BY pouze řádky s určitou podmínkou a datem

  4. Efektivní dotaz na poslední záznam s Postgresql