Heim > Datenbank > MySQL-Tutorial > Wie rufe ich erste und letzte Datensätze aus gruppierten Daten in MySQL ab?

Wie rufe ich erste und letzte Datensätze aus gruppierten Daten in MySQL ab?

DDD
Freigeben: 2024-11-08 19:16:02
Original
1092 Leute haben es durchsucht

How to Retrieve First and Last Records from Grouped Data in MySQL?

Erste und letzte Datensätze aus gruppierten Daten mit MySQL-Aggregatfunktionen abrufen

Beim Umgang mit gruppierten Daten in MySQL kann ein Zugriff erforderlich sein der erste und der letzte Datensatz innerhalb jeder Gruppe. Betrachten Sie beispielsweise die folgende Abfrage:

SELECT MIN(low_price), MAX(high_price), open, close
FROM symbols
WHERE date BETWEEN(.. ..)
GROUP BY YEARWEEK(date)
Nach dem Login kopieren

Diese Abfrage ruft den minimalen Tiefstpreis, den maximalen Höchstpreis sowie die Eröffnungs- und Schlusskurse für jede Woche des Jahres ab. Wenn das Ziel jedoch darin besteht, den ersten und letzten Datensatz jeder Gruppe zu erhalten, reicht die obige Abfrage nicht aus.

Lösung

Um dies zu erreichen, kann man Folgendes verwenden Funktionen GROUP_CONCAT und SUBSTRING_INDEX. Die folgende Abfrage ändert die ursprüngliche Abfrage so, dass sie Spalten für den ersten und letzten Eröffnungskurs enthält:

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)
Nach dem Login kopieren

Erläuterung

  • GROUP_CONCAT: Verkettet die Werte der angegebene Spalte (z. B. offen) innerhalb jeder Gruppe, getrennt durch ein Komma.
  • SUBSTRING_INDEX: Extrahiert die Teilzeichenfolge vor oder nach dem angegebenen Vorkommen eines Trennzeichens (in diesem Fall ein Komma).

Durch die Verwendung dieser Funktionen ruft die Abfrage jeweils effizient den ersten Eröffnungskurs und den letzten Schlusskurs ab Gruppe. Dieser Ansatz vermeidet die Notwendigkeit mehrerer Unterabfragen und bietet eine leistungsstarke Lösung zum Abrufen der gewünschten Daten.

Das obige ist der detaillierte Inhalt vonWie rufe ich erste und letzte Datensätze aus gruppierten Daten in MySQL ab?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage