sql >> Base de Datos >  >> RDS >> Mysql

Contar valores numéricos consecutivos en SQL

Esta es una forma de problema de lagunas e islas. Puede asignar cada 0 un grupo contando el número de valores distintos de cero antes de él. Luego agregue.

Sin embargo, las tablas SQL representan desordenadas conjuntos No hay orden a menos que una columna especifique el orden. Déjame suponer que tienes uno. Entonces:

select count(*)
from (select t.*,
             sum(values <> 0) over (partition by idnumber order by <ordering col>) as grp
      from t
     ) t
where values = 0
group by idnumber, grp;