sql >> Databasteknik >  >> RDS >> Mysql

Räkna på varandra följande numeriska värden i SQL

Detta är en form av luckor-and-öar-problem. Du kan tilldela varje 0 en grupp genom att räkna antalet värden som inte är noll före den. Aggregera sedan.

SQL-tabeller representerar dock oordnade set. Det finns ingen beställning om inte en kolumn anger beställningen. Låt mig anta att du har en. Sedan:

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;


  1. Postgres kunde inte ansluta till servern

  2. För- och nackdelar med att använda paket i Oracle

  3. Vad heter MySQL:s SQL-specifika programmeringsspråk?

  4. UPDATE-satser är i frågesluttillstånd