Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

use mysql SUM() em uma cláusula WHERE


Você só pode usar agregados para comparação na cláusula HAVING:
GROUP BY ...
  HAVING SUM(cash) > 500

O HAVING A cláusula exige que você defina uma cláusula GROUP BY.

Para obter a primeira linha em que a soma de todo o dinheiro anterior é maior que um determinado 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

Como a função agregada ocorre em uma subconsulta, o alias de coluna para ela pode ser referenciado na cláusula WHERE.