Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

làm thế nào để tìm nạp số lần xuất hiện liên tục của một giá trị cột trong sql?

Trước hết, trong SQL theo dữ liệu định nghĩa không có bất kỳ thứ tự nào trừ khi ORDER BY được sử dụng.
Xem: Wikipedia - Đặt hàng theo

Bạn phải cung cấp một cột bổ sung cho bảng của mình để xác định thứ tự và có thể được sử dụng trong ORDER BY mệnh đề, ví dụ:RN trong ví dụ dưới đây:

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

Đối với dữ liệu trên, bạn có thể sử dụng Biểu thức bảng chung (truy vấn đệ quy) để nhận kết quả cần thiết, ví dụ:truy vấn dưới đây hoạt động trên cơ sở dữ liệu 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. SQL được thực thi gần đây không phải trong V $ SQL

  2. Giải quyết lỗi PLS-00323 trong Oracle

  3. Làm cách nào tôi có thể tìm thấy cột và tên bảng bên dưới cho dạng xem Oracle?

  4. Hàm NEW_TIME () trong Oracle

  5. Nhận BLOB từ Cột BFILE trong Oracle