sql >> Database teknologi >  >> RDS >> Sqlserver

Tæl fortløbende duplikerede værdier i SQL

Jeg vil antage, at id er unik og stigende. Du kan få tal af fortløbende værdier ved at bruge de forskellige rækkenumre. Det følgende tæller alle sekvenser:

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;

Hvis du vil have den længste sekvens af 0'er:

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. Hvordan ville jeg bruge ON DUPLICATE KEY UPDATE i min CodeIgniter-model?

  2. Er der ulemper ved at bruge en generisk varchar(255) til alle tekstbaserede felter?

  3. Konvertering af mysql-tabeller fra latin1 til utf8

  4. Sammenligning af databaseproxy-failover-tider - ProxySQL, MaxScale og HAProxy