MySQL bietet die Aggregationsfunktion SUM(), um die Summe der Werte in einer Spalte zu berechnen. Während SUM() üblicherweise in SELECT-Abfragen verwendet wird, um aggregierte Ergebnisse zu erhalten, kann es mit bestimmten Einschränkungen auch in WHERE-Klauseln verwendet werden.
Im gegebenen Szenario besteht das Ziel darin, die erste Zeile in einer Tabelle abzurufen, wo Die Summe der Barwerte aus vorherigen Zeilen überschreitet einen bestimmten Schwellenwert. Die Verwendung von „WHERE SUM(cash) > 500“ in der WHERE-Klausel führt nicht zum gewünschten Ergebnis, da Aggregate in diesem Zusammenhang nicht direkt verglichen werden können.
Um die gewünschte Funktionalität zu erreichen, sollte die HAVING-Klausel verwendet werden Verbindung mit der GROUP BY-Klausel. Die HAVING-Klausel erfordert jedoch eine GROUP BY-Klauseldefinition. Daher wäre in diesem Fall eine Gruppierung nicht sinnvoll.
Die Lösung besteht darin, eine verschachtelte Unterabfrage innerhalb der WHERE-Klausel zu verwenden. Dieser Ansatz ermöglicht es uns, die laufende Summe der Barwerte bis zu jeder Zeile zu berechnen und diesen Wert dann im Vergleich zu verwenden. Dies wird durch die folgende Abfrage erreicht:
<code class="sql">SELECT y.id, y.cash FROM ( SELECT t.id, t.cash, ( SELECT SUM(x.cash) FROM TABLE x WHERE x.id <= t.id ) AS running_total FROM TABLE t ORDER BY t.id ) y WHERE y.running_total > 500 ORDER BY y.id LIMIT 1;</code>
Durch Verweis auf den Spaltenalias „running_total“ in der WHERE-Klausel können wir die laufende Summe mit dem angegebenen Schwellenwert vergleichen. Die LIMIT-Klausel stellt sicher, dass nur die erste Zeile zurückgegeben wird, die die Kriterien erfüllt.
Das obige ist der detaillierte Inhalt vonWie rufe ich die erste Zeile ab, in der die Summe der Werte einen Schwellenwert in MySQL überschreitet?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!