使用MySQL查询平均分前30%的学生的各科成绩及平均分字段名为StuName 学生姓名,CBT_scor 计算机应用基础成绩,PS_score PS成绩,H5_score H5成绩 FROM t_student JOIN t_score on t_score.StuId=t_student.StuId
时间: 2024-02-12 18:06:01 浏览: 88
学科、姓名、分数。 分别计算每门学科分数最高的前三名,并显示名次。写入MySQL中。
你可以使用以下SQL语句查询平均分前30%的学生的各科成绩及平均分:
```
SELECT StuName, CBT_score, PS_score, H5_score
FROM (
SELECT *, (@rank:=@rank+1) AS rank
FROM (
SELECT t_student.StuName, AVG(t_score.CBT_score) AS CBT_score, AVG(t_score.PS_score) AS PS_score, AVG(t_score.H5_score) AS H5_score, AVG(t_score.total_score) AS total_score
FROM t_student
JOIN t_score ON t_student.StuId = t_score.StuId
GROUP BY t_student.StuName
ORDER BY total_score DESC
) AS ranked, (SELECT @rank:=0) AS r
) AS top30
WHERE rank <= (SELECT COUNT(*) * 0.3 FROM t_student)
```
这个查询语句首先计算每个学生的平均分,并按照平均分从高到低进行排名。然后再从排名中选择前30%的学生,并返回他们的姓名、计算机应用基础成绩、PS成绩、H5成绩。注意,这个查询语句中的t_student和t_score分别是学生信息表和成绩表的表名,你需要根据具体情况进行修改。
阅读全文