Maison >base de données >tutoriel mysql >Comment résumer correctement les données de plusieurs tables SQL et éviter des résultats incorrects ?

Comment résumer correctement les données de plusieurs tables SQL et éviter des résultats incorrects ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-30 14:50:14700parcourir

How to Correctly Summarize Data from Multiple SQL Tables and Avoid Incorrect Results?

Résumer les données de plusieurs tables en SQL : corriger les résultats incorrects

Dans le domaine de l'analyse des données, il est souvent nécessaire de combiner des informations provenant de plusieurs tableaux pour avoir une compréhension globale. Une tâche courante consiste à calculer la somme des valeurs de ces tableaux, regroupées par une colonne commune. Cependant, comme le montre le code fourni, des résultats incorrects peuvent survenir si les données ne sont pas traitées correctement.

La requête initiale fournie :

SELECT AP.[PROJECT],
SUM(AP.Value) AS SUM_AP,
SUM(INV.Value) AS SUM_INV
FROM AP INNER JOIN INV ON (AP.[PROJECT] =INV.[PROJECT])
WHERE AP.[PROJECT] = 'XXXXX'
GROUP BY AP.[PROJECT]

tente de calculer la somme des valeurs de deux tables, AP et INV pour un PROJET spécifique. Cependant, le problème réside dans l'utilisation de la clause GROUP BY. Le regroupement des résultats par AP.PROJECT entraîne l'inclusion de valeurs en double dans la somme, ce qui entraîne des totaux incorrects.

Pour remédier à cela, une approche plus robuste utilisant des sous-requêtes est nécessaire :

SELECT
    AP1.[PROJECT],
    (SELECT SUM(AP2.Value) FROM AP AS AP2 WHERE AP2.PROJECT = AP1.PROJECT) AS SUM_AP,
    (SELECT SUM(INV2.Value) FROM INV AS INV2 WHERE INV2.PROJECT = AP1.PROJECT) AS SUM_INV
FROM AP AS AP1
    INNER JOIN INV AS INV1 ON (AP1.[PROJECT] =INV1.[PROJECT])
WHERE AP1.[PROJECT] = 'XXXXX'
GROUP BY AP1.[PROJECT]

Cette requête améliorée utilise des sous-requêtes pour calculer la somme des valeurs pour chaque PROJET individuellement. En isolant les calculs dans des sous-requêtes, nous éliminons le problème des valeurs en double incluses dans les sommes. Le résultat est un résumé précis et significatif des données de plusieurs tableaux, regroupés par colonne souhaité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!

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