Erste und letzte Datensätze gruppierter Daten mit Aggregatfunktionen in MySQL abrufen
In MySQL gilt beim Abrufen von Daten aus gruppierten Datensätzen mithilfe von Aggregatfunktionen Es kann schwierig sein, den ersten und letzten Datensatz der Gruppe abzurufen. Obwohl dies durch mehrere Abfragen erreicht werden kann, kann es bei großen Tabellen ineffizient sein.
Um diesen Prozess zu optimieren, bietet MySQL eine effizientere Lösung mit den Funktionen GROUP_CONCAT und SUBSTRING_INDEX .
Mithilfe von GROUP_CONCAT und SUBSTRING_INDEX
Durch die gemeinsame Verwendung dieser Funktionen können Sie Werte aus der Gruppe verketten und dann den ersten und letzten Wert mit SUBSTRING_INDEX extrahieren. So funktioniert es:
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
So funktioniert es:
Beispiel:
Betrachten Sie die folgende Abfrage:
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)
Dies Die Abfrage ruft effizient den ersten (offenen) und letzten (geschlossenen) Datensatz für jede Gruppe ab und minimiert so die Verarbeitungszeit für große Tabellen.
Das obige ist der detaillierte Inhalt vonWie kann ich den ersten und letzten Datensatz gruppierter Daten in MySQL effizient abrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!