2016-03-13 88 views
0

我有這個表:「等級」與下面列: 'student_id數據「分數」發現平均

叫「student_id數據」我使用

<?php echo $myData['student_id'];?> 

到所說的「得分」我使用

<?php echo $myData['score'];?> 

時,我想打電話給列的平均「得分」我使用

$query="Select AVG(score) as average FROM grade";  
$result_array=mysql_query($query); 
$average= mysql_fetch_array($result_array); 

問題是,在score列中有一個null數據,平均值計算爲0

所以這裏是列得分拍攝的示例數據: 問題:

'10', '10', '10', '' , '10' will give average of 8. 

我想是這樣的:

'10', '10', '10', '' , '10' will give average of 10 

任何幫助,如何解決這一問題?

+0

你剛剛嘗試添加'where'標準嗎? '得分不是零'?或者如果它確實是空白的,那麼'where score!='''...... – sgeddes

+0

謝謝......它適用於得分!='' – gtviga

回答

0

你可以有一個簡單的,如果計數的「」(空),然後減去從數據大小

for (i =0; i < resultarray.length; i++){ 
    if (resultarray[i] == ''){ 
    nullcounter++; 
    } else { 
    sum += sum; 
    } 
} 
average = sum /(resultarray.length - nullcounter); 
+0

僞代碼 'for(i = 0; i

0

不知道爲什麼它給了這樣的結果,因爲像SUM聚合函數count語句, AVG等默認放棄NULL值。

不管怎麼說,你可以試試這個是安全的:

SELECT AVG(score) as average 
FROM grade 
WHERE score IS NOT NULL 

希望這有助於。

和平! xD