MySQL-计算平均值的百分比

标签 mysql

我有下表:

平均值

id
subject_id
student_id
value
semester_id

classes_students

id
class_academic_year_id
student_id

类(class)_学术年

id
class_id
academic_year_id

学期

id
name
academic_year_id
start_date
end_date

我需要查询某个学年某个科目的某个类(class)学生的毕业百分比(即平均分高于 5 的学生的百分比;例如,假设学生的平均分是 6)学期 ID = 1,学期 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%。有没有办法实现这个目标?

最佳答案

您应该使用该查询并按类别左连接它。

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

通过这种方式,您将得到 COUNT(GRADUATED)/COUNT(*),这是一个介于 0 和 1 之间的数字,因此您只需将其乘以 100 即可得到百分比。

关于MySQL-计算平均值的百分比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24368380/

相关文章:

mysql - 命名 fifo 管道是否使用磁盘写入和读取?

java - 如何在java程序中使用它后将其标记为死行或已使用

php - jquery声音通知

mysql - 获取论坛中所有主题的回复总数

mysql - 如果 lat/lng 为空,则应将什么放入 lat/lng 数据库字段中?

mysql - ActiveRecord SQL 语句未返回正确的数据

php - 检测 <link> 或 &lt;script&gt; 标记中是否使用了 php 文件

mysql - 获取匹配所有搜索查询的结果

php - 什么时候应该使用 MySQL 事务?

mysql - CouchDB 压缩