sql >> Databáze >  >> RDS >> Sqlserver

Počítejte po sobě jdoucí duplicitní hodnoty v SQL

Budu předpokládat, že id je unikátní a stále se zvyšuje. Počty po sobě jdoucích hodnot můžete získat pomocí různých čísel řádků. Následující postup počítá všechny sekvence:

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;

Pokud chcete nejdelší sekvenci 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. Postgres výpis pouze částí tabulek pro vývojový snímek

  2. ClusterControl - Pokročilá správa zálohování - mariabackup Část I

  3. Pochopení nasazení Amazon Auroras Multi-AZ

  4. Spuštění dvou SQL dotazů na jedné stránce php (SET + SELECT)