学生表s和成绩表g用一个sql查询每个学生的平均成绩从高到低排序,要求存在学生g表无其考试记录的情况,也要查询出来,其平均成绩默认为0
时间: 2024-03-27 15:35:19 浏览: 77
学生成绩查询系统,增删改查jsp+servlet+Mysql,支持排序。代码简单易懂,适合课后作业及考试.zip
可以使用左连接(Left Join)将学生表(s)与成绩表(g)连接起来,然后使用AVG函数计算每个学生的平均成绩,最后按照平均成绩从高到低排序。如果某个学生在成绩表中没有记录,则使用COALESCE函数将其平均成绩默认为0。
具体的SQL语句如下:
```
SELECT s.student_name, COALESCE(AVG(g.score), 0) AS avg_score
FROM student s
LEFT JOIN grade g ON s.student_id = g.student_id
GROUP BY s.student_id, s.student_name
ORDER BY avg_score DESC
```
其中,LEFT JOIN表示左连接,COALESCE函数用于判断第一个参数是否为NULL,如果是NULL,则返回第二个参数,AVG函数用于计算平均成绩,GROUP BY表示按照学生ID和学生姓名进行分组。最后使用ORDER BY按照平均成绩从高到低排序。
阅读全文