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!