2016-03-22 9 views
0

を取得私は完全に配列との良好ではないと私はこれを返すデータベースクエリ持っている:私はどのように多くのポイント、各ユーザをカウントするためにループを使用してきましたPHPのカウント配列で出現し、平均

ID USER TASK Points Time 
1 admin Accounting 1 -7 
1 admin Accounting 1 -15 
1 admin Accounting 1 -1146 
1 admin Accounting 1 -2 
1 admin Accounting 1 -3 
2 Mike Encoding 1 -7 
2 Mike Encoding 1 -55 
2 Mike Encoding 1 0 
2 Mike Encoding 1 -6 
3 Adam Printing 1 -5 
3 Adam Printing 1 -12 
3 Adam Printing 1 -7 
3 Adam Printing 1 -4 
3 Adam Printing 1 -8 
3 Adam Printing 1 -10 

を持っていますが、私は(時間の合計/カウント数(時間))である彼らの平均時間を取得問題を得た

は、これまでの私のコードはこれです:

while($row = mysqli_fetch_assoc($result)) 
     { 

      $countCase[$row['TASK']] = isset($countCase[$row['TASK']]) ? $countCase[$row['TASK']] + 1 : 1; 

      $countUser[$row['TASK']][$row['USER']] = isset($countUser[$row['TASK']][$row['USER']]) ? $countUser[$row['TASK']][$row['USER']] + 1 : 1;      
     } 

それは基本的にすべての出現箇所を数えるが、持つ難しさを取得平均時間もこの配列をデータベースやより良い提案に挿入するのに適していますか?

+2

また、mysqlの 'SUM()'、 'COUNT()'、 'GROUP BY'を利用するクエリを使用することもできます。 – frz3993

+0

私はそれをやろうとします。 –

+1

'GROUP BY USER'を使って'(SUM(Time)/ COUNT(ID))AS TimeAverage'が動作すると思います。または 'GROUP BY USER、TASK'または' GROUP BY TASK、USER'を使用します。どちらにしてもあなたのケースに合っています。 – frz3993

答えて

2

この質問を解決するために、グループ関数とMySQL関数を使用してクエリを書き直すことができます。