Récupération du premier et du dernier enregistrement de données groupées avec des fonctions d'agrégation dans MySQL
Dans MySQL, lors de la récupération de données à partir d'enregistrements groupés à l'aide de fonctions d'agrégation, il peut être difficile de récupérer le premier et le dernier enregistrement du groupe. Bien que plusieurs requêtes puissent y parvenir, cela peut s'avérer inefficace pour les grandes tables.
Pour optimiser ce processus, MySQL propose une solution plus efficace en utilisant les fonctions GROUP_CONCAT et SUBSTRING_INDEX .
À l'aide de GROUP_CONCAT et SUBSTRING_INDEX
En utilisant ces fonctions ensemble, vous pouvez concaténer les valeurs du groupe, puis extraire la première et la dernière valeurs à l'aide de SUBSTRING_INDEX. Voici comment :
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
Comment ça marche :
Exemple :
Considérez la requête suivante :
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)
Cette requête récupère efficacement les premiers enregistrements (ouverts) et derniers (fermés) de chaque groupe, minimisant ainsi le temps de traitement pour les grandes tables.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3