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

Jak pomocí funkce okna určit, kdy provést různé úkoly v Hive nebo Postgres?

Řešení v Postgresu je poměrně snadné, protože podporuje generate_series() . Nejprve rozložte data pro jeden řádek za den pro každý řádek v tabulce:

select d.*, gs.dy
from data d, lateral
     generate_series(start_day, end_day) gs(dy);

Poté agregujte, abyste získali úkol pro každý den:

select d.person, d.dy, max(d.task_key) as task_key
from (select d.*, gs.dy
      from data d, lateral
           generate_series(start_day, end_day) gs(dy)
     ) d
group by d.person, d.dy;

Poté můžete znovu agregovat, ale je to složité, protože jste mohli "rozdělit" původní řádky (viz můj komentář). To odpovídá na vaši otázku, který úkol který den provést.

To vše můžete provést bez bočního spojení nebo generate_series() pomocí číselné/sčítací tabulky.




  1. Migrace Azure Database for MySQL/MariaDB na On-Prem Server

  2. Změny kontextu relace databáze přetrvávají při opětovném použití sdruženého připojení

  3. Co může způsobit občasné chyby ORA-12519 (TNS:nebyla nalezena žádná vhodná obsluha).

  4. Proaktivní monitorování MySQL (Developer Studio/Advisors Angle)