本题目要求编写SQL语句,
查询每个同学超过他选修的平均成绩的课程。
请使用:
1)用相关子查询实现
2)使用派生表实现。
表结构:
请在这里写定义表结构的SQL语句。例如:
CREATE TABLE `cou` (
`cno` char(4) NOT NULL,
`cname` varchar(30) NOT NULL,
`credit` smallint(6) DEFAULT NULL,
`ptime` char(5) DEFAULT NULL,
`teacher` char(10) DEFAULT NULL,
PRIMARY KEY (`cno`)
)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_cno` FOREIGN KEY (`cno`) REFERENCES `cou` (`CNO`),
);
表样例
请在这里给出上述表结构对应的表样例。例如
cou
表:
sc
表:
输出样例:
请在这里给出输出样例。例如:
SELECT sc.sno AS 学号, cou.cname AS 课程名, sc.grade AS 成绩
FROM sc
JOIN (
SELECT sno, AVG(grade) AS 平均成绩
FROM sc
GROUP BY sno
) AS avg_grades ON sc.sno = avg_grades.sno
JOIN cou ON sc.cno = cou.cno
WHERE sc.grade > avg_grades.平均成绩
ORDER BY sc.sno