sql >> Database >  >> RDS >> Mysql

Tel opeenvolgende numerieke waarden in SQL

Dit is een vorm van gaps-and-islands-probleem. U kunt elke 0 . toewijzen een groep door het aantal niet-nulwaarden ervoor te tellen. Verzamel dan.

SQL-tabellen vertegenwoordigen echter ongeordend stelt. Er is geen bestelling tenzij een kolom de volgorde aangeeft. Laat me aannemen dat je er een hebt. Dan:

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. php hoe te gebruiken selectievak voor zoekgegevens in lijstweergave (tabel)

  2. hoe het wachtwoord van de rootgebruiker in de MySQL-workbench opnieuw in te stellen

  3. Permgen Memory Leak met hot re-implementatie en Oracle-database

  4. Hoe kan ik grote hoeveelheden data uit een database opslaan in XML (geheugenprobleem)?