sql >> Database >  >> RDS >> Sqlserver

Tel opeenvolgende dubbele waarden in SQL

Ik ga ervan uit dat id is uniek en toenemend. U kunt tellingen van opeenvolgende waarden krijgen door de verschillende rijnummers te gebruiken. Het volgende telt alle reeksen:

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;

Als je de langste reeks van nullen wilt:

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. Lopend totaal per groeps-SQL (Oracle)

  2. Waarom respecteert PL/SQL de door Rollen verleende privileges niet?

  3. Meerdere Hibernate-reeksgeneratoren voor één entiteit met PostgreSQL

  4. Laravel:bestel op waar in