在SC表(包括学号Sno,课程号Cno,成绩Grade)中统计每门课程成绩均在 80 分以上的各学生平均分
时间: 2023-06-25 09:04:56 浏览: 201
可以使用以下SQL语句来实现:
```
SELECT Sno, AVG(Grade) AS AvgGrade
FROM SC
WHERE Cno IN (
SELECT Cno
FROM SC
WHERE Grade >= 80
GROUP BY Cno
)
GROUP BY Sno
HAVING AVG(Grade) >= 80;
```
解释如下:
首先,内层子查询会筛选出成绩均在80分以上的课程号,使用GROUP BY Cno对课程号进行分组,并使用WHERE子句过滤出符合条件的数据。
接着,外层主查询会使用INNER JOIN连接SC表和内层子查询的结果集,连接条件为Cno。然后,使用GROUP BY Sno对学生编号进行分组,并使用AVG函数计算每个学生的平均成绩。
最后,使用HAVING子句过滤出平均成绩在80分以上的学生记录。
相关问题
在sc表中创建存储过程p2根据学号SNO查询相应学号的学生的所有个人成绩,在sc表中有学号SNO,课程号CNO以及成绩GRADE三个字段
好的,我了解了你的要求,下面是针对你的问题的SQL语句:
CREATE PROCEDURE p2 (@sno varchar(10))
AS
SELECT S.SNO, S.SNAME, C.CNO, C.CNAME, SC.GRADE
FROM SC SC
INNER JOIN S S ON S.SNO = SC.SNO
INNER JOIN C C ON C.CNO = SC.CNO
WHERE SC.SNO = @sno;
这个存储过程会返回给你表 SC 中学号为 @sno 的学生的所有个人成绩,包括学生姓名、课程名称等信息。希望这能够帮助到你!
在sc表中创建存储过程根据输入的学号查询对应学号的学生所有成绩信息,其中sc表中有SNO学号,CNO课程号,以及GRADE成绩三个字段
好的,针对您的问题,我可以提供如下存储过程实现:
CREATE PROCEDURE GetStudentGrades
@SNO varchar(15)
AS
BEGIN
SELECT * FROM sc WHERE SNO = @SNO
END
该存储过程接收一个输入参数 @SNO,表示要查询的学生学号。在存储过程中,使用 SELECT 语句查询 sc 表中 SNO 字段等于 @SNO 的记录,返回对应学生的所有成绩信息。
阅读全文