Recuperar el primer y último registro de datos agrupados con funciones agregadas en MySQL
En MySQL, al recuperar datos de registros agrupados utilizando funciones agregadas, Puede resultar complicado recuperar el primer y el último registro del grupo. Aunque varias consultas pueden lograr esto, puede ser ineficiente para tablas grandes.
Para optimizar este proceso, MySQL ofrece una solución más eficiente usando las funciones GROUP_CONCAT y SUBSTRING_INDEX .
Usando GROUP_CONCAT y SUBSTRING_INDEX
Al usar estas funciones juntas, puede concatenar valores del grupo y luego extraer el primer y último valor usando SUBSTRING_INDEX. Aquí se explica cómo:
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
Cómo funciona:
Ejemplo:
Considere la siguiente consulta:
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)
Esta consulta recupera de manera eficiente el primer registro (abierto) y el último (cerrado) de cada grupo, minimizando el tiempo de procesamiento para tablas grandes.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3