Extrahieren von maximalen Datumszeilen mit Scheckbeträgen ungleich Null in SQL
Dieses Beispiel zeigt, wie Sie eindeutige Gruppen mit den neuesten Daten und Scheckwerten ungleich Null aus einem Datensatz auswählen, der Gruppen, Daten und Geldwerte (Bargeld und Schecks) enthält.
Ein erster Versuch mit dieser Abfrage erwies sich als unzureichend:
<code class="language-sql">SELECT group, MAX(date), checks FROM table WHERE checks > 0 GROUP BY group ORDER BY group DESC</code>
Diese Abfrage hat alle Daten und Prüfwerte für jede Gruppe zurückgegeben, nicht nur die Daten aus der Zeile mit dem maximalen Datum.
Die Lösung umfasst einen zweistufigen Ansatz:
Zuerst ermitteln wir das maximale Datum für jede Gruppe mit Prüfwerten ungleich Null:
<code class="language-sql">SELECT group, MAX(date) AS max_date FROM table WHERE checks > 0 GROUP BY group</code>
Dann verbinden wir diesen Ergebnissatz wieder mit der ursprünglichen Tabelle, um die entsprechenden checks
(und andere relevante Spalten) für diese Zeilen mit maximalem Datum abzurufen:
<code class="language-sql">SELECT t.group, a.max_date, t.checks FROM table t INNER JOIN ( SELECT group, MAX(date) AS max_date FROM table WHERE checks > 0 GROUP BY group ) a ON a.group = t.group AND a.max_date = t.date;</code>
Dieser innere Join stellt sicher, dass nur Zeilen, die sowohl dem maximalen Datum als auch den Prüfkriterien ungleich Null entsprechen, in der endgültigen Ausgabe enthalten sind.
Best Practice: Die Verwendung beschreibender und nicht reservierter Wörter für Spaltennamen (z. B. group_id
anstelle von group
) verbessert die Lesbarkeit des Codes und verringert das Fehlerrisiko.
Das obige ist der detaillierte Inhalt vonWie wählt man in SQL effizient maximale Datumszeilen mit Prüfwerten ungleich Null aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!