Maison > base de données > tutoriel mysql > Comment compter efficacement les occurrences de valeurs consécutives dans une table SQL ?

Comment compter efficacement les occurrences de valeurs consécutives dans une table SQL ?

Mary-Kate Olsen
Libérer: 2025-01-05 06:43:42
original
204 Les gens l'ont consulté

How to Efficiently Count Consecutive Value Occurrences in a SQL Table?

Comptage des occurrences consécutives de valeurs dans un tableau

Dans une base de données avec un tableau contenant une colonne de valeurs, déterminer le nombre d'occurrences consécutives de chaque valeur peut être une tâche utile pour divers scénarios d’analyse de données. Cette question explore le défi d'atteindre ce décompte à l'aide de techniques SQL efficaces.

Les données fournies se composent d'un tableau avec une colonne Id et une colonne Nom contenant les valeurs « A », « B » et « C ». L'objectif est de compter les occurrences consécutives de ces valeurs dans la colonne Nom et de présenter les résultats comme suit :

+------+------------+
| Name | Repetition |
+------+------------+
| A    |          2 |
| B    |          4 |
| C    |          1 |
| B    |          2 |
+------+------------+
Copier après la connexion

Une approche tentée consistait à utiliser la fonction COUNT() sur une partition par Nom, mais cela a donné des résultats incorrects. Pour résoudre ce problème, une méthode alternative exploitant les numéros de ligne peut être utilisée.

L'extrait de code suivant présente une solution améliorée :

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;
Copier après la connexion

Cette approche utilise la différence entre deux numéros de ligne pour identifier des événements. En soustrayant le numéro de ligne au sein de chaque groupe du numéro de ligne global, un identifiant de regroupement unique est créé pour chaque séquence de valeurs consécutives. La fonction COUNT() est ensuite appliquée à ces groupes, fournissant le nombre souhaité pour chaque occurrence consécutive de valeurs.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal