Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Contar valores numéricos consecutivos no SQL


Esta é uma forma de problema de lacunas e ilhas. Você pode atribuir cada 0 um grupo contando o número de valores diferentes de zero antes dele. Em seguida, agregue.

No entanto, as tabelas SQL representam não ordenadas conjuntos. Não há ordenação, a menos que uma coluna especifique a ordenação. Deixe-me supor que você tem um. Então:
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;