Maison > base de données > tutoriel mysql > Comment récupérer le premier et le dernier enregistrement de données groupées dans MySQL ?

Comment récupérer le premier et le dernier enregistrement de données groupées dans MySQL ?

DDD
Libérer: 2024-11-08 19:16:02
original
1127 Les gens l'ont consulté

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

Récupération du premier et du dernier enregistrement de données groupées avec les fonctions d'agrégation MySQL

Lorsque vous traitez des données groupées dans MySQL, il peut être nécessaire d'accéder les premier et dernier enregistrements de chaque groupe. Par exemple, considérons 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 récupère le prix minimum bas, le prix maximum haut, les prix d'ouverture et de clôture pour chaque semaine de l'année. Cependant, si l'objectif est d'obtenir le premier et le dernier enregistrement de chaque groupe, la requête ci-dessus est insuffisante.

Solution

Pour y parvenir, on peut utiliser la Fonctions GROUP_CONCAT et SUBSTRING_INDEX. La requête suivante modifie la requête d'origine pour inclure des colonnes pour le premier et le dernier cours d'ouverture :

SELECT MIN(low_price), MAX(high_price),
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
FROM symbols
WHERE date BETWEEN(.. ..)
GROUP BY YEARWEEK(date)
Copier après la connexion

Explication

  • GROUP_CONCAT : Concatène les valeurs du colonne spécifiée (par exemple, ouverte) dans chaque groupe, séparée par un virgule.
  • SUBSTRING_INDEX : extrait la sous-chaîne avant ou après l'occurrence spécifiée d'un délimiteur (dans ce cas, une virgule).

En utilisant ces fonctions, la requête récupère efficacement le premier cours d'ouverture et dernier cours de clôture pour chaque groupe. Cette approche évite le besoin de plusieurs sous-requêtes et offre une solution performante pour récupérer les données souhaitées.

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal