2017-01-26 3 views
0

Я пытаюсь найти среднее из набора результатов, которые приходят из избранных:Найти среднее строк

Я уже нашел в среднем ряду результатов, но мне нужно, чтобы затем найти среднее значение средних но я изо всех сил стараюсь считать строки и делать математику.

вот мой PHP:

<?php 
$dansql2 = "SELECT team_members.team_id, team_members.member_id, members.member_id, 
        members.firstName, members.lastName, members.score_1, members.score_2, 
        members.score_3, members.score_4, members.score_5, members.score_6, 
        members.score_7, members.score_8 
      FROM team_members 
       JOIN members 
        ON team_members.member_id = members.member_id 
      WHERE members.dashboard_id = $dashboard_id 
       AND team_members.team_id = $teamSelect 
      ORDER BY members.firstName ASC"; 


$danresult = $conn->query($dansql2);?> 
<?php  
if ($danresult->num_rows > 0) { 
    while($row = $danresult->fetch_assoc()) { 

     $score1 = $row["score_1"]; 
     $score2 = $row["score_2"]; 
     $score3 = $row["score_3"]; 
     $score4 = $row["score_4"]; 
     $score5 = $row["score_5"]; 
     $score6 = $row["score_6"]; 
     $score7 = $row["score_7"]; 
     $score8 = $row["score_8"]; 

     $sum = $score1 + $score2 + $score3 + $score4 + $score5 + $score6 + $score7 + $score8; 
     $totalAverage = $sum/8; 

     echo $totalAverage; 
    } 
} 
?> 

так, что мне нужно найти общее среднее от переменной $ totalAverage. Это выводит среднее значение каждого из десятков строк, но мне нужно высокий по $ totalAverage

+2

Ваш дизайн базы данных выглядит плохо. Вы могли бы просто создать таблицу 'team_members_score' и связать ее со строкой' team_members' столько раз, сколько захотите, а не с 'score_n'. Таким образом, среднее значение было бы простой совокупной функцией, а не всем этим испытанием. – apokryfos

+0

@Michael все сделано извините за это. – PhpDude

+0

Возможно, посмотрите [MySQL AVG()] (https://dev.mysql.com/doc/refman/5.7/en/group-by-functions.html#function_avg) –

ответ

2

Вы означает что-то вроде этого

<?php 
$dansql2 = "SELECT team_members.team_id, team_members.member_id, members.member_id, 
        members.firstName, members.lastName, 
        members.score_1, members.score_2, 
        members.score_3, members.score_4, 
        members.score_5, members.score_6, 
        members.score_7, members.score_8, 
        (members.score_1 + members.score_2 + 
        members.score_3 + members.score_4 + 
        members.score_5 + members.score_6 + 
        members.score_7 + members.score_8)/8 as membersAvg 
      FROM team_members 
       JOIN members 
        ON team_members.member_id = members.member_id 
      WHERE members.dashboard_id = $dashboard_id 
       AND team_members.team_id = $teamSelect 
      ORDER BY members.firstName ASC"; 


$danresult = $conn->query($dansql2); 

$allAvg = 0; 
while($row = $danresult->fetch_assoc()) { 
    $allAvg += $row['membersAvg']; 
    echo $row['firstName'] . ' ' .$row['lastName'] . ' Avg = ' . $row['membersAvg']; 
} 
echo 'Avg of Avgs = ' . $allAvg/$danresult->num_rows; 
?> 
+0

Где вы получаете '$ row ['membersAvg']' from? – PhpDude

+0

Посмотрите на запрос. Я сделал простой средний calc как часть запроса – RiggsFolly

+0

Hm thats собирается вмешиваться во все остальное. Я посмотрю, что я могу с этим сделать, приветствует вашу помощь. – PhpDude

Смежные вопросы