Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Policz kolejne zduplikowane wartości w SQL

Zakładam, że id jest wyjątkowy i rosnący. Możesz uzyskać liczbę kolejnych wartości, używając różnych numerów wierszy. Wszystkie sekwencje są zliczane:

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;

Jeśli chcesz mieć najdłuższą sekwencję zer:

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. Jak naprawić „Procedura oczekuje parametru „@statement” typu „ntext/nchar/nvarchar”. Błąd w SQL Server

  2. Dowiedz się, jak korzystać z programu SQL Server Management Studio

  3. Jak działa SET ROWCOUNT w SQL Server

  4. Automatyczna korekta planu w SQL Server

  5. Łączenie wielu tabel w SQL