Maison >base de données >tutoriel mysql >Comment calculer la moyenne d'un champ pour chaque combinaison unique de deux autres champs en utilisant SQL ?

Comment calculer la moyenne d'un champ pour chaque combinaison unique de deux autres champs en utilisant SQL ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-10-30 10:16:02352parcourir

How to calculate the average of a field for each unique combination of two other fields using SQL?

Requête SQL avec AVG et GROUP BY : extraction des valeurs moyennes pour chaque champ

Vous recherchez une requête SQL qui extrait des informations spécifiques d'une table , à savoir la moyenne du champ 'val' pour chaque valeur unique 'id' et 'pass'.

Pour y parvenir, vous pouvez utiliser une requête simple mais efficace :

<code class="sql">SELECT id, pass, AVG(val) AS val_1
FROM data_r1
GROUP BY id, pass;</code>

Cette requête regroupe les données par « id » et « pass », calculant la valeur moyenne de « val » pour chaque combinaison. Le tableau résultant comprend une ligne pour chaque paire unique de valeurs « id » et « pass ».

Alternativement, si vous préférez une seule ligne pour chaque « id » unique avec les valeurs moyennes de toutes les valeurs « pass » , utilisez cette requête :

<code class="sql">SELECT d1.id,
    (SELECT IFNULL(ROUND(AVG(d2.val), 4) ,0) FROM data_r1 d2 
     WHERE d2.id = d1.id AND pass = 1) as val_1,
    (SELECT IFNULL(ROUND(AVG(d2.val), 4) ,0) FROM data_r1 d2 
     WHERE d2.id = d1.id AND pass = 2) as val_2,
    (SELECT IFNULL(ROUND(AVG(d2.val), 4) ,0) FROM data_r1 d2 
     WHERE d2.id = d1.id AND pass = 3) as val_3,
    (SELECT IFNULL(ROUND(AVG(d2.val), 4) ,0) FROM data_r1 d2 
     WHERE d2.id = d1.id AND pass = 4) as val_4,
    (SELECT IFNULL(ROUND(AVG(d2.val), 4) ,0) FROM data_r1 d2 
     WHERE d2.id = d1.id AND pass = 5) as val_5,
    (SELECT IFNULL(ROUND(AVG(d2.val), 4) ,0) FROM data_r1 d2 
     WHERE d2.id = d1.id AND pass = 6) as val_6,
    (SELECT IFNULL(ROUND(AVG(d2.val), 4) ,0) FROM data_r1 d2 
     WHERE d2.id = d1.id AND pass = 7) as val_7
from data_r1 d1
GROUP BY d1.id</code>

Cette requête utilise une sous-requête imbriquée pour chaque valeur de « réussite » afin de calculer la moyenne. Il regroupe ensuite les résultats par « identifiant », fournissant une vue consolidée des 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!

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