Heim  >  Artikel  >  Datenbank  >  Wie rufe ich den ersten und letzten Datensatz aus gruppierten Zeilen mit Aggregatfunktionen in MySQL ab?

Wie rufe ich den ersten und letzten Datensatz aus gruppierten Zeilen mit Aggregatfunktionen in MySQL ab?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-11-20 00:56:02363Durchsuche

How to Retrieve the First and Last Records from Grouped Rows with Aggregate Functions in MySQL?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn