我有下表:
平均值
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%。有没有办法实现这个目标?
答案 0 :(得分:0)
您应该使用该查询并按类继续加入。
SELECT COUNT(*) FROM classes_students GROUP BY class_academic_year_id ...
通过这种方式,你将获得COUNT(GRADUATED)/ COUNT(*),这是0到1之间的数字,所以你只需要将它乘以100即可得到你的百分比。