Récupération de la première ligne avec une somme en espèces précédente dépassant une limite à l'aide de MySQL
Définition du problème :
Étant donné un tableau avec les colonnes id et cash, la tâche consiste à récupérer la première ligne où la somme cumulée d'argent dans les lignes précédentes dépasse une valeur spécifiée. Par exemple, si la limite souhaitée est de 500, la fonction doit renvoyer la troisième ligne où la somme cumulée en espèces atteint plus de 500.
Solution MySQL :
En essayant Pour comparer les agrégats dans la clause WHERE (par exemple, WHERE SUM(cash) > 500) s'avère infructueux, la clause HAVING peut être utilisée pour comparer les agrégats. Cependant, la clause HAVING nécessite une clause GROUP BY correspondante.
Pour résoudre ce problème, la requête suivante peut être utilisée :
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
Cette requête utilise une sous-requête pour calculer la somme cumulée d'argent liquide. pour chaque ligne, qui est stockée dans l'alias de colonne running_total. En référençant la colonne running_total dans la clause WHERE, la première ligne où la somme cumulée dépasse la limite spécifiée peut être récupérée. La clause LIMIT 1 garantit que seule la première ligne de ce type est renvoyée.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!