Maison >base de données >tutoriel mysql >Comment trouver les valeurs minimales et maximales sur des lignes consécutives avec des espaces et des îlots ?

Comment trouver les valeurs minimales et maximales sur des lignes consécutives avec des espaces et des îlots ?

DDD
DDDoriginal
2024-12-24 19:14:11772parcourir

How to Find Minimum and Maximum Values Across Consecutive Rows with Gaps and Islands?

Recherche des valeurs minimales et maximales pour les lignes consécutives avec des espaces et des îlots

L'objectif est d'extraire les valeurs minimales et maximales des colonnes de début et de fin pour les lignes consécutives partageant la même valeur d'acte, tout en ignorant les espaces et les îlots de lignes avec des actes différents valeurs.

Solution :

Pour y parvenir, nous utilisons des numéros de ligne pour identifier des groupes consécutifs de lignes similaires :

with cte as (
  select name, act, rn, startt, endd,
         row_number() over (partition by name, act order by rn) as act_rn
  from input
)
select name, act, min(startt), max(endd)
from cte
group by name, act, act_rn - rn;

Explication :

  • La sous-requête cte ajoute les numéros de ligne et les numéros de ligne d'acte aux données d'entrée.
  • La requête principale regroupe les données par nom, acte et différence entre le numéro de ligne d'acte et le numéro de ligne. Cette différence est utilisée pour différencier les lignes consécutives et non consécutives au sein d'une valeur d'acte particulière.
  • Le regroupement nous permet d'agréger les valeurs minimales et maximales pour chaque groupe consécutif, en éliminant les écarts et les îlots.

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!

Déclaration:
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