MySQL - 计算平均值的百分比

时间:2014-06-23 14:22:02

标签: mysql

我有下表:

平均值

id
subject_id
student_id
value
semester_id

classes_students

id
class_academic_year_id
student_id

classes_academic_years

id
class_id
academic_year_id

学期

id
name
academic_year_id
start_date
end_date

我需要一个查询来查找某学年某一学科的学生毕业百分比(即平均分数高于5的学生的百分比;例如说学生的平均值为6 semester_id = 1,semester_id = 2的平均值为7,平均值为6.5)。

这是当前查询,但它只返回student_id和两个学期的平均值。

select averages.student_id, avg(value) from averages
inner join semesters on semesters.id = averages.semester_id
inner join academic_years on academic_years.id = semesters.academic_year_id

inner join classes_students on classes_students.student_id = averages.student_id
inner join classes_academic_years   on classes_academic_years.id = classes_students.class_academic_year_id

where averages.subject_id = '66' 
and academic_years.id = 3
and classes_academic_years.academic_year_id = academic_years.id
and classes_academic_years.class_id = 259

group by averages.student_id

我希望结果像74.5%。有没有办法实现这个目标?

1 个答案:

答案 0 :(得分:0)

您应该使用该查询并按类继续加入。

SELECT COUNT(*) FROM classes_students GROUP BY class_academic_year_id ...

通过这种方式,你将获得COUNT(GRADUATED)/ COUNT(*),这是0到1之间的数字,所以你只需要将它乘以100即可得到你的百分比。