Maison > base de données > tutoriel mysql > le corps du texte

Comment trouver la première ligne où la somme cumulée dépasse une limite dans MySQL ?

Linda Hamilton
Libérer: 2024-11-04 05:31:02
original
344 Les gens l'ont consulté

How to Find the First Row Where Cumulative Cash Sum Exceeds a Limit in MySQL?

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
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal