Maison >base de données >tutoriel mysql >Comment compter les occurrences consécutives de valeurs dans une table SQL ?
Regroupement des valeurs en fonction d'occurrences consécutives
Pour compter les occurrences consécutives de valeurs dans un tableau, une approche efficace consiste à calculer la différence dans les lignes nombres.
Considérez la requête suivante :
select name, count(*) from ( select t.*, (row_number() over (order by id) - row_number() over (partition by name order by id) ) as grp from t ) t group by grp, name;
Cette sous-requête génère deux numéros de ligne pour chaque ligne :
En soustrayant les deux numéros de lignes, on crée un identifiant "groupe" (grp) qui s'incrémente chaque fois que le nom change ou qu'il y a une occurrence consécutive distincte du même nom.
La requête finale regroupe ensuite les lignes en fonction de ce grp et compte les occurrences de chaque nom dans chaque groupe. Cela aboutit au nombre souhaité d'occurrences consécutives :
+------+------------+ | Name | Repetition | +------+------------+ | A | 2 | | B | 4 | | C | 1 | | B | 2 | +------+------------+
Cette approche fournit un moyen efficace d'identifier des valeurs consécutives dans un tableau en exploitant la différence entre les numéros de ligne comme mécanisme de regroupement.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!