Maison >base de données >tutoriel mysql >Comment une requête SQL unique peut-elle récupérer des sommes distinctes en fonction de plusieurs conditions de clause WHERE ?
Utilisez plusieurs clauses WHERE pour récupérer différentes données
En SQL, vous pouvez utiliser la clause WHERE pour filtrer des lignes spécifiques, personnalisant ainsi la façon dont les données sont récupérées à partir d'une table. Ce problème présente le défi d'extraire deux ensembles de données différents de la même table, chacun satisfaisant une clause WHERE différente.
L'exemple de table « transactions » stocke les enregistrements de transactions financières caractérisées par leur identifiant, leur identifiant de compte, leur identifiant de budget, les points gagnés et le type de transaction. La tâche consiste à calculer la somme des points attribués et la somme des points émis pour chaque identifiant de budget unique.
Pour ce faire, une seule requête SQL peut être construite qui combine les clauses WHERE nécessaires. La requête suivante permet d'obtenir le résultat souhaité :
<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 utilise l'instruction CASE WHEN pour additionner les points de manière conditionnelle en fonction du type de transaction. Pour chaque identifiant de budget, la requête calcule la somme des points associés au type « allocation » et la stocke dans la colonne « allouée ». De même, il calcule la somme des points de type « problème » et la stocke dans la colonne « émis ». En regroupant les résultats par ID de budget, la requête produit l'ensemble de résultats attendu, qui contient des colonnes distinctes pour les points alloués et les points émis pour chaque budget.
Cette requête démontre la flexibilité de SQL dans la combinaison de clauses WHERE pour récupérer des sous-ensembles spécifiques de données d'une table, ce qui en fait un outil puissant pour effectuer des tâches complexes de récupération de données.
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!