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

bagaimana cara mengambil jumlah kejadian berkelanjutan dari nilai kolom di sql?

Pertama-tama, dalam SQL menurut definisi, data tidak memiliki urutan apa pun kecuali ORDER BY digunakan.
Lihat:Wikipedia - Pesan Berdasarkan

Anda harus memberikan kolom tambahan ke tabel Anda yang menentukan urutan, dan dapat digunakan di ORDER BY klausa, misalnyaRN kolom pada contoh di bawah ini:

        RN CS_ID     
---------- ----------
         1 a         
         2 b         
         3 a         
         4 a         
         5 a         
         6 b         
         7 b         
         8 b         
         9 b   

Untuk data di atas Anda dapat menggunakan Common Table Expression (query rekursif) untuk mendapatkan hasil yang diinginkan, misalnya query di bawah ini bekerja pada database Oracle:

WITH my_query( RN, cs_id , cont ) AS (

    SELECT t.rn, t.cs_id, 1
        FROM My_table t
        WHERE rn = 1
    UNION ALL
    SELECT t.rn, t.cs_id,
         case when t.cs_id = m.cs_id
              then m.cont + 1
              else 1
         end
        FROM My_table t
        JOIN my_query m
        ON t.rn = m.rn + 1
)
select * from my_query
order by rn;

        RN CS_ID            CONT
---------- ---------- ----------
         1 a                   1
         2 b                   1
         3 a                   1
         4 a                   2
         5 a                   3
         6 b                   1
         7 b                   2
         8 b                   3
         9 b                   4



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Penguraian XML di Oracle pl/sql

  2. Mendapatkan Kesalahan - ORA-01858:karakter non-numerik ditemukan di tempat yang diharapkan berupa numerik

  3. Memilih nilai yang berbeda dari tiga kolom dengan maksimal keempat di mana ada duplikat

  4. Sisipan Massal Oracle Menggunakan Pengembang SQL

  5. Penyorotan sintaks di browser Oracle seperti SQL Server Management Studio