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
Libérer: 2024-12-30 14:50:14
original
700 Les gens l'ont consulté

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

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

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!

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