Maison > base de données > tutoriel mysql > Comment trouver les valeurs minimales et maximales pour les lignes consécutives en fonction de valeurs d'actes spécifiques ?

Comment trouver les valeurs minimales et maximales pour les lignes consécutives en fonction de valeurs d'actes spécifiques ?

Linda Hamilton
Libérer: 2025-01-05 08:44:41
original
423 Les gens l'ont consulté

How to Find Minimum and Maximum Values for Consecutive Rows Based on Specific Act Values?

Identification des groupes de lignes consécutifs pour l'agrégation

Problème :
Récupérer les valeurs minimales et maximales de startt et end pour les lignes consécutives de valeurs d’acte spécifiques. Chaque nom unique définit une séquence distincte d'occurrences d'actes. L'entrée ne fournit aucune colonne supplémentaire pour l'identification des lignes.

Approche :

Pour établir l'identité des lignes au sein de chaque groupe d'actes de nom, nous utilisons les numéros de lignes :

row_number() over (partition by name, act order by rn) as act_n
row_number() over (partition by name order by rn) as rn
Copier après la connexion

Ces numéros de lignes nous permettent de différencier les lignes au sein d'un groupe et d'identifier des plages d'actes consécutives valeurs.

Agrégation pour Min et Max :

Pour trouver le résultat souhaité pour chaque combinaison nom-acte, nous agrégeons les données dans des groupes de lignes consécutifs. Le calcul clé est la différence entre les deux numéros de ligne :

rn - act_n diff
Copier après la connexion

Cette différence représente la position au sein de chaque groupe, nous permettant de déterminer des plages consécutives.

select name, act, min(startt) startt, max(endd) endd
from (
  select
    name,
    act,
    row_number() over (partition by name order by name, startt) rn,
    row_number() over (partition by name, act order by name, startt) act_n,
    startt,
    endd
  from @t
)
group by (rn - act_n), name, act
order by name;
Copier après la connexion

Cette requête regroupe les données par la différence de numéro de ligne, fournissant le résultat souhaité.

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