如何用SQL建立一个存储过程查询给定学号的学生的平均成绩,选修课程的门数,以及不合格门数

1个回答
展开全部
摘要 CREATE PROCEDURE p_成绩查询 @sno CHAR(9)
AS
SELECT
s.学号,
姓名,
课程名,
分数
FROM 学生表 s, 课程表 c, 成绩表 sc
WHERE s.学号 = sc.学号
AND c.ID = sc.课程ID
AND s.学号 = @sno;
EXECUTE p_成绩查询 '151011029';
注意:以上SQL代码仅为示例,具体实现方式可能因数据库架构和设计而异。
咨询记录 · 回答于2023-12-30
如何用SQL建立一个存储过程查询给定学号的学生的平均成绩,选修课程的门数,以及不合格门数
亲,我很高兴为你服务。使用SQL创建一个存储过程来查询给定学号的学生的平均成绩、选修课程的门数以及不合格门数的方法如下: CREATE PROCEDURE p_成绩查询 @sno CHAR(9) AS SELECT s.学号, 姓名, 课程名, 分数 FROM 学生表 s JOIN 成绩表 sc ON s.学号 = sc.学号 JOIN 课程表 c ON c.ID = sc.课程ID WHERE s.学号 = @sno; 执行存储过程: EXECUTE p_成绩查询 '151011029';
还可以问问题吗
亲,那您问吧我尽量解决您的问题
谢谢你,同样是数据库的题
亲,这个我只能告诉您方法,没有具体的代码: 一、SQL 数据定义语句练习 使用 SQL 语言创建以下表 学生关系模式:S(SNO 、SNAME 、SSEX 、SBIRTHIN 、CLASS) BEGIN TRANSACTION INSERT INTO 学生表名 VALUES('1305123345','张玲') IF @@error=0 BEGIN INSERT INTO 成绩表名 VALUES(第三) MSSQL: 首先你的学号在sc的外键必须是 on delete cascade ALTER TABLE sc ADD CONSTRAINT fk_test FOREIGN KEY (学号) REFERENCES s(学号) ON DELETE CASCADE CREATE TRIGGER test ON s AFTER DELETE AS BEGIN DELETE FROM sc WHERE 学号 IN (SELECT 学号 FROM deleted) END Oracle: CREATE OR REPLACE TRIGGER test AFTER DELETE ON s FOR EACH ROW BEGIN DELETE FROM sc WHERE 学号=:old.学号; END; SQL语法 DELIMITER | CREATE TRIGGER `
就是在统计总的选课门数和不及格门数时,我用了group by把不及格门数统计起来了,这个时候总的选课门数就不是所以选门数了,而是不及格门数,我该怎么修改命令啊?
亲,正确无误的写法应该为: SELECT OperateUser, AccountName, Operatetime, Recorddate, Income, Expense, Balance, Remark FROM FmAcountOperateRec GROUP BY 课程号 HAVING COUNT(*) >= 60 ORDER BY 成绩降序; 按课程号进行分组,统计不及格的人数即可: SELECT 课程号, COUNT(*) AS 人数 FROM 成绩表 WHERE score < 60;
CREATE PROCEDURE p_avg_count_failcount @sno CHAR(20), @avg_grade INT OUTPUT, @total INT OUTPUT, @failcount INT OUTPUT AS BEGIN SELECT @avg_grade = AVG(grade), @total = COUNT(*), @failcount = COUNT(*) FROM student JOIN sc ON student.sno = sc.snowhere WHERE student.sno = @sno AND grade < 60 GROUP BY cno; END; 这段代码创建了一个存储过程p_avg_count_failcount,它接受一个学号作为输入,并返回该学号的学生的课程平均成绩、选修课程门数和不及格门数。这里使用的是SQL语言。不过这段代码中有一些错误和不清晰的地方: - 连接条件应该是 `student.sno = sc.sno`,而不是 `student.sno = sc.snowhere`。 - `where` 语句的拼写错误,应该是 `where`,而不是 `wherewhere`。 - 注释中使用了中文和表情符号,这可能会影响代码的可读性。建议使用英文和适当的标点符号。
亲, CREATE PROCEDURE p_成绩查询 @sno CHAR(9) AS SELECT s.学号, 姓名, 课程名, 分数 FROM 学生表 s, 课程表 c, 成绩表 sc WHERE s.学号 = sc.学号 AND c.ID = sc.课程ID AND s.学号 = @sno EXECUTE p_成绩查询 '151011029'
下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消