现有学生表tb_student和科目表tb_score用sql统计每个班各科均分大于80分的同学人数和人数占比(先计算每个同学各科平均分,再计算占比)。
时间: 2024-05-10 10:17:27 浏览: 179
学生平均成绩大于80同表sql
假设tb_student表中有字段class_id表示班级,tb_score表中有字段student_id表示学生ID,subject表示科目,score表示成绩,可以使用以下SQL语句实现该功能:
```sql
SELECT
class_id,
COUNT(DISTINCT student_id) AS count,
COUNT(DISTINCT student_id) / COUNT(DISTINCT tb_student.id) AS ratio
FROM
tb_student
JOIN tb_score ON tb_student.id = tb_score.student_id
GROUP BY
class_id
HAVING
AVG(score) > 80
```
这条SQL语句首先使用JOIN进行两个表的连接,然后使用AVG函数计算每个学生各科的平均分,然后使用GROUP BY对班级进行分组,使用HAVING过滤出均分大于80分的班级,最后使用COUNT函数统计人数和占比。
阅读全文