PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Bagaimana cara menggunakan fungsi jendela untuk menentukan kapan harus melakukan tugas yang berbeda di Hive atau Postgres?

Solusi di Postgres cukup mudah, karena mendukung generate_series() . Pertama, meledakkan data untuk satu baris per hari untuk setiap baris di tabel Anda:

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

Kemudian, gabungkan untuk mendapatkan tugas setiap hari:

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;

Anda kemudian dapat menggabungkan kembali, tetapi ini rumit karena Anda mungkin telah "membagi" baris asli (lihat komentar saya). Ini menjawab pertanyaan Anda tentang tugas mana yang harus dilakukan pada hari itu.

Anda dapat melakukan semua ini tanpa penggabungan lateral atau generate_series() dengan menggunakan tabel angka/penghitungan.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Apa perbedaan antara postgres dan postgresql_psycopg2 sebagai mesin basis data untuk Django?

  2. Bagaimana cara menggabungkan dua tabel (sub-tabel utama dan banyak-ke-satu) untuk mendapatkan hanya SATU item dari tabel kedua?

  3. MultipleActiveResultSets untuk model data entitas postgresql dan ado.net

  4. Bagaimana cara melakukan pembaruan non-pemblokiran besar di PostgreSQL?

  5. Postgresql:Periksa apakah Skema Ada?