本题目要求编写SQL语句,
在stu表 和 sc表 中查询所有学生的平均成绩,如果某学生尚未选修课程或成绩为空时,平均分计为0。
请在这里写定义表结构的SQL语句。例如:
CREATE TABLE `stu` (
`sno` char(4) NOT NULL,
`sname` char(8) NOT NULL,
`sex` tinyint(1) DEFAULT NULL,
`mno` char(2) DEFAULT NULL,
`birdate` datetime DEFAULT NULL,
`memo` text,
PRIMARY KEY (`sno`)
);
CREATE TABLE `sc` (
`sno` char(4) NOT NULL,
`cno` char(4) NOT NULL,
`grade` decimal(6,1) DEFAULT NULL,
PRIMARY KEY (`sno`,`cno`),
CONSTRAINT `fk_sc_sno` FOREIGN KEY (`sno`) REFERENCES `stu` (`sno`)
);
表样例
请在这里给出上述表结构对应的表样例。例如


输出样例:
请在这里给出输出样例。例如:

代码如下:
select stu.sno 学号,ifnull(avg(grade),0) 平均成绩
from stu left join sc on stu.sno = sc.sno
group by stu.sno
该SQL语句从stu表和sc表中查询所有学生包括未选课或成绩为空的学生的平均成绩。使用LEFT JOIN确保每个学生都包含在结果中,即使他们在sc表中没有记录。通过IFNULL函数,当grade为空时,平均成绩被设置为0。然后通过GROUP BY按学生学号进行分组,计算每个学生的平均分。

5172

被折叠的 条评论
为什么被折叠?



