PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Как да използвате прозоречна функция, за да определите кога да изпълнявате различни задачи в Hive или Postgres?

Решението в Postgres е доста лесно, защото поддържа generate_series() . Първо разбийте данните за един ред на ден за всеки ред във вашата таблица:

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

След това обобщете, за да получите задачата за всеки ден:

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;

След това можете да групирате отново, но това е трудно, защото може да сте „разделили“ оригиналните редове (вижте моя коментар). Това отговаря на въпроса ви коя задача да изпълните в кой ден.

Можете да направите всичко това без странично свързване или generate_series() чрез използване на таблица с числа/таблици.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ПРИСЪЕДИНЕТЕ (ИЗБЕРЕТЕ ... ) ue ON 1=1?

  2. Springboot postgres Неуспешно определяне на подходящ клас драйвер

  3. Грешка в типа оператор на вложен случай (postgres)

  4. Spring Boot data-jpa и nativeQuery Postgres cast

  5. Как да върна jsonb масив и масив от обекти от моите данни?