sql >> Base de Datos >  >> RDS >> Mysql

use mysql SUM() en una cláusula WHERE

Solo puede usar agregados para comparar en la cláusula HAVING:

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

El HAVING requiere que defina una cláusula GROUP BY.

Para obtener la primera fila donde la suma de todo el efectivo anterior es mayor que cierto valor, use:

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

Debido a que la función agregada ocurre en una subconsulta, se puede hacer referencia al alias de la columna en la cláusula WHERE.