PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Làm cách nào để sử dụng hàm cửa sổ để xác định thời điểm thực hiện các tác vụ khác nhau trong Hive hoặc Postgres?

Giải pháp trong Postgres khá dễ dàng, vì nó hỗ trợ generate_series() . Trước tiên, hãy phân tích dữ liệu cho một hàng mỗi ngày cho mỗi hàng trong bảng của bạn:

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

Sau đó, tổng hợp để nhận nhiệm vụ cho mỗi ngày:

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;

Sau đó, bạn có thể tổng hợp lại, nhưng điều này rất khó vì bạn có thể đã "tách" các hàng ban đầu (xem nhận xét của tôi). Điều này trả lời câu hỏi của bạn về nhiệm vụ sẽ thực hiện vào ngày nào.

Bạn có thể thực hiện tất cả những điều này mà không cần nối bên hoặc generate_series() bằng cách sử dụng một số / bảng kiểm đếm.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách tìm kiếm bằng cách sử dụng giá trị của một biến Refcursor

  2. Postgresql:Thực thi psql kịch bản với mật khẩu

  3. Xóa các hàng trong kho dữ liệu theo phạm vi thời gian

  4. Thay đổi thứ tự cột trong bảng postgres

  5. Dữ liệu không gian trong PostgreSQL