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!