Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Cara mengelompokkan baris berurutan bersama-sama dalam SQL dengan beberapa kolom

Ini adalah masalah kesenjangan dan pulau. Salah satu metode untuk menyelesaikannya menggunakan row_number() :

select Date, User, min(Time) as start_time, max(time) as end_time,
       Location,
       listagg(Service, ',') within group (order by service),     
       count(*) as cnt
from (select t.*,
             row_number() over (date order by time) as seqnum,
             row_number() over (partition by user, date, location order by time) as seqnum_2
      from t
     ) t
group by Date, User, Location, (seqnum - seqnum_2);

Agak sulit untuk menjelaskan cara kerjanya. Saran saya adalah menjalankan subquery dan Anda akan melihat bagaimana perbedaan nomor baris mendefinisikan grup yang Anda cari.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. 4 Cara Menemukan Baris yang Mengandung Huruf Kecil di Oracle

  2. Menggabungkan data dari kursor menjadi satu

  3. Menghapus angka nol di depan dari pengembang varchar sql

  4. Menangani ExecuteScalar() saat tidak ada hasil yang dikembalikan

  5. .masalah penyisipan JDBC berikutnya