"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo recuperar eficientemente el primer y último registro de datos agrupados en MySQL?

¿Cómo recuperar eficientemente el primer y último registro de datos agrupados en MySQL?

Publicado el 2024-11-16
Navegar:603

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

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:

  • GROUP_CONCAT concatena todos los valores de apertura o cierre en una sola cadena, ordenados por fecha y hora column.
  • SUBSTRING_INDEX extrae el primer y el último valor de la cadena concatenada dividiéndolos por coma (','). El argumento '1' indica la primera o la última aparición.

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.

Último tutorial Más>

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