创建名为s_info的存储过程,要求输入某学生的姓名时输出该学生所学课程的门数以及他的平均成绩
时间: 2024-03-19 11:43:05 浏览: 15
好的,以下是创建s_info存储过程的SQL语句:
```
CREATE PROCEDURE s_info
@name VARCHAR(50)
AS
BEGIN
SET NOCOUNT ON;
DECLARE @count INT, @avg_score FLOAT
--查询该学生所学课程的门数
SELECT @count = COUNT(*)
FROM courses
WHERE student_name = @name
--查询该学生所有课程成绩的平均值
SELECT @avg_score = AVG(score)
FROM courses
WHERE student_name = @name
--输出结果
PRINT '学生 ' + @name + ' 所学课程门数为 ' + CAST(@count AS VARCHAR(10)) + ',平均成绩为 ' + CAST(@avg_score AS VARCHAR(10))
END
```
在上述代码中,我们首先声明了两个变量 @count 和 @avg_score,用于存储查询结果。然后分别使用 COUNT 和 AVG 函数查询该学生所学课程的门数和平均成绩,并将结果存储到对应的变量中。最后使用 PRINT 输出结果。
你可以将该代码复制到 SQL Server 中执行,并将 @name 替换为具体的学生姓名进行测试。
相关问题
创建名为s_info的存储过程,要求输入某学生的姓名时输出该学生所学课程的门数以及他的平均成绩。
好的,以下是符合您要求的存储过程代码:
```
CREATE PROCEDURE s_info
@name NVARCHAR(50)
AS
BEGIN
-- 获取该学生所选课程的门数
DECLARE @num_courses INT
SELECT @num_courses = COUNT(*) FROM course_selection WHERE student_name = @name
-- 获取该学生所有课程的成绩总和
DECLARE @sum_scores INT
SELECT @sum_scores = SUM(score) FROM course_selection WHERE student_name = @name
-- 计算平均成绩
DECLARE @avg_score FLOAT
SET @avg_score = CAST(@sum_scores AS FLOAT) / CAST(@num_courses AS FLOAT)
-- 输出结果
SELECT @name AS student_name, @num_courses AS num_courses, @avg_score AS avg_score
END
```
该存储过程接受一个学生的姓名作为输入参数,然后使用该姓名查询`course_selection`表,获取该学生所选课程的门数以及所有课程的成绩总和,最后计算平均成绩并将结果输出。请确保在使用该存储过程前已经创建了`course_selection`表,并且表中包含学生姓名和对应的课程成绩。
3.创建名为s_info的存储过程,要求输入某学生的姓名时输出该学生所学课程的门数以及他的平均成绩
好的,以下是创建名为s_info的存储过程的代码,满足你的要求:
```sql
CREATE PROCEDURE s_info(IN s_name VARCHAR(50))
BEGIN
DECLARE s_id INT;
DECLARE course_count INT;
DECLARE grade_sum FLOAT;
DECLARE avg_grade FLOAT;
SELECT id INTO s_id FROM students WHERE name = s_name;
SELECT COUNT(*) INTO course_count FROM courses WHERE student_id = s_id;
SELECT SUM(grade) INTO grade_sum FROM courses WHERE student_id = s_id;
SET avg_grade = grade_sum / course_count;
SELECT CONCAT(s_name, '学生所学课程的门数为', course_count, ',平均成绩为', avg_grade) AS result;
END
```
以上代码中,我们先根据输入的学生姓名查询到该学生在学生表中的id,然后再根据该id查询到该学生在课程表中上了多少门课程以及所有课程的成绩总和。最后,根据总成绩和课程门数计算出平均成绩,并将结果返回。