Mysql
 sql >> Base de données >  >> RDS >> Mysql

Compter les valeurs numériques consécutives en SQL

Il s'agit d'une forme de problème de lacunes et d'îlots. Vous pouvez attribuer à chaque 0 un groupe en comptant le nombre de valeurs non nulles qui le précèdent. Ensuite, agrégez.

Cependant, les tables SQL représentent non ordonnées ensembles. Il n'y a pas de classement sauf si une colonne spécifie le classement. Laissez-moi supposer que vous en avez un. Ensuite :

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;