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

Đếm các giá trị trùng lặp liên tiếp trong SQL

Tôi sẽ giả định rằng id là duy nhất và ngày càng tăng. Bạn có thể nhận được số lượng các giá trị liên tiếp bằng cách sử dụng các số hàng khác nhau. Phần sau đếm tất cả các chuỗi:

select grp, value, min(id), max(id), count(*) as cnt
from (select t.*,
             (row_number() over (order by id) - row_number() over (partition by value order by id)
             ) as grp
      from table t
     ) t
group by grp, value;

Nếu bạn muốn chuỗi số 0 dài nhất:

select top 1 grp, value, min(id), max(id), count(*) as cnt
from (select t.*,
             (row_number() over (order by id) - row_number() over (partition by value order by id)
             ) as grp
      from table t
     ) t
group by grp, value
having value = 0
order by count(*) desc


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cập nhật Dữ liệu Salesforce bằng Con trỏ Máy chủ SQL

  2. Lựa chọn và định cấu hình phần cứng cho SQL Server 2016 Standard Edition

  3. Danh sách các loại dữ liệu trong SQL Server 2017

  4. Không thể thu nhỏ cơ sở dữ liệu ‘chỉ đọc’ | Thu hẹp nhật ký giao dịch khi sử dụng nhóm AlwaysOn Av sẵn sàng

  5. Hiệu suất của hàm COUNT SQL