Erste und letzte Datensätze gruppierter Daten mit Aggregatfunktionen in MySQL abrufen
In MySQL 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. .
Verwenden 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 geht's:
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)
Diese 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.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3