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

usa mysql SUM() in una clausola WHERE

Puoi utilizzare gli aggregati solo per il confronto nella clausola HAVING:

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

Il HAVING La clausola richiede di definire una clausola GROUP BY.

Per ottenere la prima riga in cui la somma di tutti i contanti precedenti è maggiore di un certo valore, utilizzare:

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

Poiché la funzione di aggregazione si verifica in una sottoquery, è possibile fare riferimento all'alias di colonna nella clausola WHERE.