Maison >base de données >tutoriel mysql >Comment trouver les heures de début et de fin minimales et maximales pour les lignes consécutives au sein des groupes d'activités ?

Comment trouver les heures de début et de fin minimales et maximales pour les lignes consécutives au sein des groupes d'activités ?

Susan Sarandon
Susan Sarandonoriginal
2025-01-03 01:03:39682parcourir

How to Find Minimum and Maximum Start and End Times for Consecutive Rows within Activity Groups?

Recherche de valeurs minimales et maximales pour des lignes consécutives

Vous disposez d'un ensemble de données avec des lignes représentant des activités, regroupées par nom et classées par numéro de ligne. L'objectif est de trouver les valeurs minimales et maximales des heures de début et de fin pour des lignes consécutives au sein de chaque groupe d'activités.

Solution utilisant la différence de numéro de ligne :

Une approche est utiliser la différence entre les numéros de ligne pour identifier les lignes consécutives du même activité :

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

Explication :

  1. Créez une expression de table commune (CTE) appelée cte en ajoutant deux colonnes supplémentaires :

    • seqnum_n : numéro de ligne dans chaque nom groupe.
    • seqnum_na : numéro de ligne dans chaque groupe nom-activité.
  2. Calculez la différence entre seqnum_n et seqnum_na. Les lignes consécutives au sein de chaque activité ont la même valeur de différence.
  3. regroupez par valeur de différence, nom et activité pour agréger les valeurs minimales et maximales.

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