Maison > base de données > tutoriel mysql > le corps du texte

Comment récupérer les premier et dernier enregistrements de lignes groupées avec des fonctions d'agrégation dans MySQL ?

Mary-Kate Olsen
Libérer: 2024-11-20 00:56:02
original
374 Les gens l'ont consulté

How to Retrieve the First and Last Records from Grouped Rows with Aggregate Functions in MySQL?

Récupération du premier et du dernier enregistrements de lignes groupées avec des fonctions d'agrégation dans MySQL

En SQL, les fonctions d'agrégation permettent une synthèse efficace des données entre les groupes . Cependant, lorsqu'ils rencontrent des enregistrements groupés, les utilisateurs peuvent rencontrer des difficultés pour récupérer le premier et le dernier enregistrement de chaque groupe. Cela devient particulièrement pertinent lorsque vous travaillez avec de grandes tables.

Considérez la requête suivante :

SELECT MIN(low_price), MAX(high_price), open, close
FROM symbols
WHERE date BETWEEN(.. ..)
GROUP BY YEARWEEK(date)
Copier après la connexion

Bien que cette requête fournisse des statistiques globales pour chaque groupe (telles que les prix minimum et maximum), elle le fait ne fournit pas les premier et dernier enregistrements pour chaque semaine. Pour répondre à ce besoin, MySQL propose plusieurs approches.

Utilisation de GROUP_CONCAT et SUBSTRING_INDEX

Une technique efficace consiste à exploiter les fonctions GROUP_CONCAT et SUBSTRING_INDEX. GROUP_CONCAT concatène les valeurs spécifiées au sein d'un groupe, séparées par un délimiteur. SUBSTRING_INDEX, à son tour, extrait les sous-chaînes des chaînes concaténées.

Voici comment nous pouvons utiliser ces fonctions pour obtenir les résultats souhaités :

SUBSTRING_INDEX( GROUP_CONCAT(CAST(open AS CHAR) ORDER BY datetime), ',', 1 ) AS open
SUBSTRING_INDEX( GROUP_CONCAT(CAST(close AS CHAR) ORDER BY datetime DESC), ',', 1 ) AS close 
Copier après la connexion

Cette approche élimine le besoin de sous-requêtes coûteuses et s'avère hautement efficace pour de tels scénarios spécifiques.

Pour plus d'informations sur GROUP_CONCAT et SUBSTRING_INDEX fonctions, reportez-vous à la documentation officielle de MySQL.

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