Maison > Article > base de données > Comment récupérer le premier et le dernier enregistrement de données groupées dans 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)
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)
Explication
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!