Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Zählen Sie aufeinanderfolgende numerische Werte in SQL

Dies ist eine Form des Lücken-und-Inseln-Problems. Sie können jedem 0 zuweisen eine Gruppe, indem die Anzahl der Nicht-Null-Werte davor gezählt wird. Dann aggregieren.

SQL-Tabellen sind jedoch ungeordnet setzt. Es gibt keine Reihenfolge, es sei denn, eine Spalte gibt die Reihenfolge an. Lassen Sie mich annehmen, dass Sie eine haben. Dann:

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;