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

Tambahkan nomor baris pada grup dengan grup berulang

Anda dapat menggunakan perbedaan nomor baris untuk menentukan grup:

select Shade, count(*) as amount
from (select t.*,
             row_number() over (order by level) as seqnum,
             row_number() over (partition by shade order by level) as seqnum_s
      from t
     ) t
group by Shade, (seqnum - seqnum_s);

Agak sulit untuk menjelaskan mengapa ini berhasil. Jika melihat hasil dari subquery, menjadi jelas mengapa perbedaan antara kedua row_number() nilai mengidentifikasi grup berurutan.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle SQL untuk Hari Kerja Terakhir Bulan Ini termasuk hari libur federal di oracle

  2. pilih berbeda (tanggal) kembalikan tanggal yang sama beberapa kali

  3. mengambil parameter dari prosedur tersimpan?

  4. Buat jumlah kumulatif dalam tampilan oracle

  5. Oracle - Transpose baris menjadi kolom