2014-07-11 18 views
0

我正在嘗試通過論壇方式提供一個查詢,它會給我這個結果:不確定如何在SQL中循環這些數據?

對於每個測驗數列表中的測驗數和平均得分。只包括10多名學生參加的測驗。

查詢我制定如下所示:

SELECT QuizNum, AVG(HighScore) from quizzes WHERE NumStudents > 10; 

然而,這給了我:

1, 20.75000 

這是不正確的數據。我真的不知道從哪一個開始。

表看起來是這樣的:

'QuizNum', 'decimal(2,0)', 'NO', 'PRI', '0', '' 
'QuizDate', 'date', 'NO', 'PRI', '0000-00-00', '' 
'HighScore', 'decimal(3,1)', 'YES', '', '', '' 
'LowScore', 'decimal(3,1)', 'YES', '', '', '' 
'AvgScore', 'decimal(3,1)', 'YES', '', '', '' 
'NumStudents', 'int(11)', 'YES', '', '', '' 
'NumPassing', 'int(11)', 'YES', '', '', '' 

所以,敵人例如,每次約會測驗一個發生已超過10名學生,所以我需要它的平均水平。然後我需要下一個測驗。 表內容:

1, '2009-01-25', 20.0, 9.0, 12.5, 15, 10 
1, '2009-06-15', 30.0, 22.0, 25.6, , 
1, '2009-08-25', , , , 15, 10 
1, '2010-01-24', 20.0, 9.0, 12.5, 17, 14 
1, '2010-06-14', 28.5, 21.0, 26.6, 25, 25 
1, '2010-08-24', , , , 21, 18 
2, '2009-03-06', 18.0, 10.5, 15.0, 15, 12 
2, '2009-07-01', 28.5, 18.5, 23.4, , 
2, '2009-09-21', 18.0, 10.5, 15.0, 15, 12 
2, '2010-03-05', 18.5, 11.5, 15.2, 17, 14 
2, '2010-06-30', 30.0, 25.0, 27.4, 23, 23 
2, '2010-09-20', , , , 22, 19 
3, '2009-03-24', 19.0, 14.5, 17.8, 13, 13 
3, '2009-08-01', 27.5, 25.0, 16.2, , 
3, '2009-10-12', 19.0, 14.5, 17.8, 13, 13 
3, '2010-03-23', 20.0, 17.0, 18.6, 16, 16 
3, '2010-07-31', , , , 23, 20 
3, '2010-10-11', 20.0, 9.0, 13.8, 22, 17 
4, '2009-04-14', 20.0, 15.5, , , 
4, '2009-11-22', 20.0, 15.5, 17.9, , 
4, '2010-04-13', 20.0, 12.5, , , 
4, '2010-11-21', 20.0, 7.5, 13.9, 20, 15 
5, '2009-05-04', 17.0, 8.5, 10.7, 10, 7 
5, '2009-12-09', 17.0, 8.5, 10.7, 10, 7 
5, '2010-04-03', 19.5, 11.5, 15.7, 15, 13 
5, '2010-12-08', 20.0, 15.0, 17.3, 18, 18 

想法?

+0

預期的輸出?什麼是NumStudents? – Sadikhasan

+0

我將更新問題以向您顯示錶格內容。有5個測驗的數量。對於每個測驗編號,我需要高分列的測驗編號和平均值。僅限10人以上參加測驗的測驗。我只是不知道如何迭代這個fasion中的列。 – user3175451

回答

2

對於每次測驗數量

你需要一個GROUP BY

SELECT QuizNum, AVG(HighScore) 
FROM quizzes 
WHERE NumStudents > 10 
GROUP BY QuizNum; 
1

你必須使用GROUP BY條款像

SELECT QuizNum, 
     AVG(HighScore) 
FROM quizzes 
WHERE NumStudents > 10 
GROUP BY QuizNum;