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

Gabungkan baris berkelanjutan dengan Postgresql

Berikut adalah salah satu metode untuk memecahkan masalah ini. Buat bendera yang menentukan apakah satu record tidak tumpang tindih dengan yang sebelumnya. Ini adalah awal dari sebuah grup. Kemudian ambil jumlah kumulatif dari flag ini dan gunakan itu untuk pengelompokan:

select user_id, min(begin_at) as begin_at, max(end_at) as end_at
from (select s.*, sum(startflag) over (partition by user_id order by begin_at) as grp
      from (select s.*,
                   (case when lag(end_at) over (partition by user_id order by begin_at) >= begin_at
                         then 0 else 1
                    end) as startflag
            from slots s
           ) s
     ) s
group by user_id, grp;

Di sini adalah SQL Fiddle.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara melihat kursor yang mendasari kueri aktif

  2. Bagaimana saya bisa tahu jika Autovacuum PostgreSQL berjalan di UNIX?

  3. Mengindeks Kunci Asing di Postgresql

  4. Bagaimana cara mengonversi FeatureCollection ke GeometryCollection atau MultiPolygon?

  5. Bagaimana cara memutakhirkan database postgresql dari 10 menjadi 12 tanpa kehilangan data untuk proyek terbuka