Abrufen der ersten und letzten Datensätze aus gruppierten Ergebnissen in MySQL
Abrufen der ersten und letzten Datensätze einer gruppierten Ergebnismenge in MySQL während Die Anwendung von Aggregatfunktionen kann eine Herausforderung sein. Betrachten Sie die folgende Abfrage:
SELECT MIN(low_price), MAX(high_price), open, close FROM symbols WHERE date BETWEEN (.. ..) GROUP BY YEARWEEK(date)
Diese Abfrage gruppiert die Daten nach Woche und berechnet den minimalen Tiefstpreis, den maximalen Höchstpreis sowie die Eröffnungs- und Schlusswerte für jede Woche. Es werden jedoch nicht der erste und der letzte Datensatz innerhalb jeder Gruppe bereitgestellt.
Um dies zu erreichen, besteht ein Ansatz darin, die Funktionen GROUP_CONCAT und SUBSTRING_INDEX zu verwenden:
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
Diese Lösung ermöglicht es Ihnen Verketten Sie alle Öffnungs- und Schlusswerte für jede Gruppe, getrennt durch Kommas, und extrahieren Sie dann den ersten und letzten Wert mit SUBSTRING_INDEX. Dieser Ansatz vermeidet teure Unterabfragen und kann für dieses spezielle Problem effizienter sein.
Weitere Informationen zu den Funktionen GROUP_CONCAT und SUBSTRING_INDEX finden Sie in der MySQL-Dokumentation. Darüber hinaus können Sie je nach den spezifischen Anforderungen Ihrer Abfrage andere Optionen wie die Verwendung von Fensterfunktionen oder benutzerdefinierten Funktionen erkunden.
Das obige ist der detaillierte Inhalt vonWie rufe ich den ersten und letzten Datensatz aus gruppierten Ergebnissen in MySQL ab?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!