Maison >base de données >tutoriel mysql >Comment additionner efficacement les points par ID de budget et type de transaction à l'aide de SQL ?

Comment additionner efficacement les points par ID de budget et type de transaction à l'aide de SQL ?

Linda Hamilton
Linda Hamiltonoriginal
2025-01-21 12:43:111088parcourir

How to Efficiently Sum Points by Budget ID and Transaction Type Using SQL?

Requête SQL efficace pour résumer les données de transaction

L'extraction de données basée sur plusieurs critères est une tâche courante dans la gestion de bases de données. Imaginez une table « transactions » contenant account_id, budget_id, points et type de transaction (allocation ou problème). Le défi consiste à calculer efficacement le total des points pour chaque budget_id, séparés par allocation et types de problèmes.

Une requête SQL concise peut résoudre ce problème avec élégance :

<code class="language-sql">SELECT budget_id,
       SUM(CASE WHEN type = 'allocation' THEN points ELSE 0 END) AS allocated,
       SUM(CASE WHEN type = 'issue' THEN points ELSE 0 END) AS issued
FROM transactions
GROUP BY budget_id;</code>

Cette requête exploite l'instruction CASE dans la fonction SUM(). L'expression CASE WHEN type = 'allocation' THEN points ELSE 0 END vérifie le type de transaction. S'il s'agit d'une « allocation », la valeur points correspondante est additionnée ; sinon, 0 est ajouté. Cette sommation conditionnelle est répétée pour les transactions de type 'émission'.

Le regroupement des résultats par budget_id permet d'obtenir un récapitulatif montrant les points alloués et délivrés pour chaque budget. Le résultat présente clairement une vue consolidée des données de transaction, facilitant l'analyse et le reporting.

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!

Déclaration:
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