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

Ambil baris berdasarkan kondisi

Ada dua alasan mengapa row y tidak dikembalikan karena kondisi:

  • b.start > a.start artinya suatu baris tidak akan pernah bergabung dengan dirinya sendiri
  • GROUP BY hanya akan mengembalikan satu record per APP_nm nilai, namun semua baris memiliki nilai yang sama.

Namun, ada kesalahan logika lebih lanjut dalam kueri yang tidak akan berhasil ditangani. Misalnya, bagaimana cara mengetahui kapan sesi "baru" dimulai?

Logika yang Anda cari dapat dicapai dalam PostgreSQL normal dengan bantuan DISTINCT ON fungsi, yang menunjukkan satu baris per nilai input dalam kolom tertentu. Namun, DISTINCT ON tidak didukung oleh Redshift.

Beberapa solusi potensial:DISTINCT ON seperti fungsionalitas untuk Redshift

Output yang Anda cari akan sepele menggunakan bahasa pemrograman (yang dapat mengulang hasil dan menyimpan variabel) tetapi sulit untuk diterapkan pada kueri SQL (yang dirancang untuk beroperasi pada deretan hasil). Saya akan merekomendasikan mengekstraksi data dan menjalankannya melalui skrip sederhana (misalnya dengan Python) yang kemudian dapat menampilkan kombinasi Awal &Akhir yang Anda cari.

Ini adalah kasus penggunaan yang sangat baik untuk Fungsi Hadoop Streaming , yang telah berhasil saya terapkan di masa lalu. Ini akan mengambil catatan sebagai input, lalu 'mengingat' waktu mulai dan hanya akan mengeluarkan catatan ketika logika akhir yang diinginkan telah terpenuhi.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kembalikan nama kolom dan nilai yang berbeda

  2. PGAadmin:Tidak terhubung ke server atau koneksi ke server telah ditutup

  3. Cara memperbarui data statistik tabel secara manual di PostgreSQL

  4. Salin tabel dari satu database ke database lain di Postgres

  5. Postgresql, pilih bidang kosong