Erste und letzte Datensätze aus gruppierten Zeilen mit Aggregatfunktionen in MySQL abrufen
In SQL ermöglichen Aggregatfunktionen eine effiziente Zusammenfassung von Daten über Gruppen hinweg . Wenn Benutzer jedoch auf gruppierte Datensätze stoßen, können sie beim Abrufen des ersten und letzten Datensatzes jeder Gruppe auf Schwierigkeiten stoßen. Dies ist besonders wichtig, wenn Sie mit großen Tabellen arbeiten.
Bedenken Sie die folgende Abfrage:
SELECT MIN(low_price), MAX(high_price), open, close FROM symbols WHERE date BETWEEN(.. ..) GROUP BY YEARWEEK(date)
Diese Abfrage stellt zwar aggregierte Statistiken für jede Gruppe bereit (z. B. Mindest- und Höchstpreise), dies ist jedoch der Fall Geben Sie nicht für jede Woche den ersten und den letzten Datensatz an. Um diesem Bedarf gerecht zu werden, bietet MySQL mehrere Ansätze.
Verwendung von GROUP_CONCAT und SUBSTRING_INDEX
Eine effiziente Technik besteht darin, die Funktionen GROUP_CONCAT und SUBSTRING_INDEX zu nutzen. GROUP_CONCAT verkettet angegebene Werte innerhalb einer Gruppe, getrennt durch ein Trennzeichen. SUBSTRING_INDEX wiederum extrahiert Teilzeichenfolgen aus verketteten Zeichenfolgen.
So können wir diese Funktionen nutzen, um die gewünschten Ergebnisse zu erzielen:
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
Dieser Ansatz macht kostspielige Unterabfragen überflüssig und erweist sich als äußerst effektiv effizient für solche spezifischen Szenarien.
Weitere Einblicke in die Funktionen GROUP_CONCAT und SUBSTRING_INDEX finden Sie in der offiziellen MySQL-Dokumentation.
Das obige ist der detaillierte Inhalt vonWie rufe ich den ersten und letzten Datensatz aus gruppierten Zeilen mit Aggregatfunktionen in MySQL ab?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!