Mysql
 sql >> Base de données >  >> RDS >> Mysql

utiliser mysql SUM() dans une clause WHERE

Vous ne pouvez utiliser des agrégats à des fins de comparaison que dans la clause HAVING :

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

Le HAVING La clause nécessite que vous définissiez une clause GROUP BY.

Pour obtenir la première ligne où la somme de toutes les espèces précédentes est supérieure à une certaine valeur, utilisez :

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

Étant donné que la fonction d'agrégation se produit dans une sous-requête, l'alias de colonne correspondant peut être référencé dans la clause WHERE.