Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Пребройте последователни дублиращи се стойности в SQL

Предполагам, че id е уникален и се увеличава. Можете да получите броя на последователните стойности, като използвате различни номера на редовете. Следното отчита всички последователности:

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;

Ако искате най-дългата последователност от 0s:

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. Използване на функция COALESCE за създаване на стойности, разделени със запетаи

  2. Създайте изглед в SQL Server 2017

  3. Версиониране на база данни на SQL Server

  4. SQL:МЕЖДУ срещу <=и>=

  5. Заявката е неуспешна или услугата не е отговорила навреме?