sql >> Database teknologi >  >> RDS >> Mysql

brug mysql SUM() i en WHERE-sætning

Du kan kun bruge aggregater til sammenligning i HAVING-sætningen:

GROUP BY ...
  HAVING SUM(cash) > 500
 

HAVING klausul kræver, at du definerer en GROUP BY-klausul.

For at få den første række, hvor summen af ​​alle de tidligere kontanter er større end en bestemt værdi, skal du bruge:

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

Fordi den aggregerede funktion forekommer i en underforespørgsel, kan der refereres til kolonnealiaset for den i WHERE-udtrykket.



  1. PostgreSQL parametriseret rækkefølge efter / grænse i tabelfunktion

  2. Hvad gør pg_escape_string præcist?

  3. Bedste tilgange til grupperet median

  4. Opdater en kolonneværdi og erstatter en del af en streng