Heim  >  Artikel  >  Datenbank  >  Wie rufe ich die erste Zeile ab, in der die Summe der Werte einen Schwellenwert in MySQL überschreitet?

Wie rufe ich die erste Zeile ab, in der die Summe der Werte einen Schwellenwert in MySQL überschreitet?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-11-04 01:35:30939Durchsuche

How to Retrieve the First Row Where the Sum of Values Exceeds a Threshold in MySQL?

Verwenden von WHERE SUM() zum Abrufen spezifischer Daten in MySQL

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!

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