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
Libérer: 2025-01-03 01:03:39
original
676 Les gens l'ont consulté

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

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!

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