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

Comment récupérer le premier et le dernier enregistrement des résultats groupés dans MySQL ?

Patricia Arquette
Libérer: 2024-11-10 06:22:02
original
810 Les gens l'ont consulté

How to Retrieve the First and Last Records from Grouped Results in MySQL?

Récupération du premier et du dernier enregistrement à partir de résultats groupés dans MySQL

Dans MySQL, récupérer le premier et le dernier enregistrement d'un ensemble de résultats groupés tout en l'application de fonctions d'agrégation peut être difficile. 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

Cette requête regroupe les données par semaine et calcule le prix minimum bas, le prix maximum élevé, les valeurs d'ouverture et de clôture pour chaque semaine. Cependant, elle ne fournit pas le premier et le dernier enregistrements au sein de chaque groupe.

Pour y parvenir, une approche consiste à utiliser les fonctions GROUP_CONCAT et SUBSTRING_INDEX :

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 solution permet de concaténez toutes les valeurs d'ouverture et de fermeture de chaque groupe, séparées par des virgules, puis extrayez la première et la dernière valeur à l'aide de SUBSTRING_INDEX. Cette approche évite les sous-requêtes coûteuses et peut être plus efficace pour ce problème spécifique.

Référez-vous à la documentation MySQL pour plus d'informations sur les fonctions GROUP_CONCAT et SUBSTRING_INDEX. De plus, vous pouvez explorer d'autres options telles que l'utilisation de fonctions de fenêtre ou de fonctions définies par l'utilisateur, en fonction des exigences spécifiques de votre requête.

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