Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 不确定如何在此数据上循环SQL?_Mysql_Sql_Database - Fatal编程技术网

Mysql 不确定如何在此数据上循环SQL?

Mysql 不确定如何在此数据上循环SQL?,mysql,sql,database,Mysql,Sql,Database,我正在尝试提出一个查询,该查询将给出以下结果: 对于每个测验编号,列出测验编号和平均高分。只包括超过10名学生参加的测验 我正在制定的查询如下所示: SELECT QuizNum, AVG(HighScore) from quizzes WHERE NumStudents > 10; 'QuizNum', 'decimal(2,0)', 'NO', 'PRI', '0', '' 'QuizDate', 'date', 'NO', 'PRI', '0000-00-00', '' 'High

我正在尝试提出一个查询,该查询将给出以下结果:

对于每个测验编号,列出测验编号和平均高分。只包括超过10名学生参加的测验

我正在制定的查询如下所示:

SELECT QuizNum, AVG(HighScore) from quizzes WHERE NumStudents > 10;
'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', '', '', ''
然而,这给了我:

1, 20.75000
这是不正确的数据。我真的不知道从哪里开始

该表如下所示:

SELECT QuizNum, AVG(HighScore) from quizzes WHERE NumStudents > 10;
'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
想法

对于每个测验号码

您需要一个
分组依据

SELECT QuizNum, AVG(HighScore) 
FROM quizzes 
WHERE NumStudents > 10 
GROUP BY QuizNum;
对于每个测验号码

您需要一个
分组依据

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

您必须使用
groupby
子句,如

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

您必须使用
groupby
子句,如

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

预期产量?什么是NumStudents?我将更新问题以显示表格内容。有5个测验。对于每个测验编号,我需要高分数列的测验编号和平均值。仅适用于超过10名学生参加的测验。我只是不知道如何在这种情况下迭代列。预期输出?什么是NumStudents?我将更新问题以显示表格内容。有5个测验。对于每个测验编号,我需要高分数列的测验编号和平均值。仅适用于超过10名学生参加的测验。我只是不知道在这种情况下如何迭代列。