Heim  >  Artikel  >  Datenbank  >  Wie finde ich die erste Zeile, in der die kumulierte Geldsumme ein Limit in MySQL überschreitet?

Wie finde ich die erste Zeile, in der die kumulierte Geldsumme ein Limit in MySQL überschreitet?

Linda Hamilton
Linda HamiltonOriginal
2024-11-04 05:31:02346Durchsuche

How to Find the First Row Where Cumulative Cash Sum Exceeds a Limit in MySQL?

Abrufen der ersten Zeile mit vorheriger Geldsumme, die ein Limit überschreitet, mit MySQL

Problemdefinition:

Bei einer Tabelle mit den Spalten „id“ und „cash“ besteht die Aufgabe darin, die erste Zeile abzurufen, in der die kumulierte Bargeldsumme in den vorherigen Zeilen einen angegebenen Wert überschreitet. Wenn das gewünschte Limit beispielsweise 500 beträgt, sollte die Funktion die dritte Zeile zurückgeben, in der die kumulierte Bargeldsumme über 500 liegt.

MySQL-Lösung:

Beim Versuch Wenn sich der Vergleich von Aggregaten in der WHERE-Klausel (z. B. WHERE SUM(cash) > 500) als erfolglos erweist, kann die HAVING-Klausel zum Vergleichen von Aggregaten verwendet werden. Die HAVING-Klausel erfordert jedoch eine entsprechende GROUP BY-Klausel.

Um dieses Problem zu lösen, kann die folgende Abfrage verwendet werden:

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

Diese Abfrage verwendet eine Unterabfrage, um die kumulierte Geldsumme zu berechnen für jede Zeile, die im Spaltenalias „running_total“ gespeichert ist. Durch Verweis auf die Spalte „running_total“ in der WHERE-Klausel kann die erste Zeile abgerufen werden, in der die kumulative Summe den angegebenen Grenzwert überschreitet. Die LIMIT 1-Klausel stellt sicher, dass nur die erste Zeile dieser Art zurückgegeben wird.

Das obige ist der detaillierte Inhalt vonWie finde ich die erste Zeile, in der die kumulierte Geldsumme ein Limit 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