sql >> Databáze >  >> RDS >> Mysql

Počítání po sobě jdoucích číselných hodnot v SQL

Toto je forma problému mezer a ostrovů. Každému 0 můžete přiřadit skupinu spočítáním počtu nenulových hodnot před ní. Poté agregujte.

SQL tabulky však představují neuspořádané sady. Neexistuje žádné řazení, pokud sloupec neurčuje řazení. Předpokládejme, že jeden máte. Potom:

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. Jak provést ladění sql v Oracle

  2. Formátujte data tabulky SQL jako textovou tabulku

  3. Agregační dotazy MongoDB vs. tabulka MySQL SELECT pole1 FROM

  4. Při použití v SELECT INTO nebyla vyvolána výjimka NO_DATA_FOUND