编写一个名为“sp_max”的存储过程,它能给出给定课程名中成绩最高的一位学生姓名、性别、所选课程、成绩,写出创建存储过程及执行存储过程的T-SQL语句。
时间: 2024-02-04 09:02:25 浏览: 19
好的,下面是创建存储过程及执行存储过程的T-SQL语句:
创建存储过程:
```sql
CREATE PROCEDURE sp_max
@courseName NVARCHAR(50)
AS
BEGIN
SELECT TOP 1
s.Name AS '学生姓名',
s.Sex AS '学生性别',
c.CourseName AS '所选课程',
sc.Score AS '成绩'
FROM
Student s
JOIN Score sc ON s.StudentId = sc.StudentId
JOIN Course c ON c.CourseId = sc.CourseId
WHERE
c.CourseName = @courseName
ORDER BY
sc.Score DESC
END
GO
```
执行存储过程:
```sql
EXEC sp_max '数学'
```
以上代码是以“数学”课程为例,你可以根据实际情况,修改@courseName的参数值。
相关问题
编写一个名为“sp_avg”存储过程,它能根据学号统计该学生所选课程的平均成绩,写出创建存储过程及执行存储过程的T-SQL语句。
创建存储过程的T-SQL语句如下:
```
CREATE PROCEDURE sp_avg
@student_id INT
AS
BEGIN
SELECT AVG(grade) AS avg_grade
FROM score
WHERE student_id = @student_id
END
```
执行存储过程的T-SQL语句如下:
```
EXEC sp_avg @student_id = 12345
```
其中,@student_id是输入参数,代表学生的学号。存储过程会返回该学生所选课程的平均成绩。注意,在执行存储过程之前,需要先在数据库中创建score表,并向其中插入学生成绩数据。
编写一个名为“sp_zong”的存储过程,它能根据学生姓名统计该学生的总成绩并能将成绩返回给调用者,写出创建存储过程及执行存储过程的T-SQL语句
好的,以下是创建存储过程及执行存储过程的T-SQL语句:
创建存储过程:
```
CREATE PROCEDURE sp_zong
@name NVARCHAR(50)
AS
BEGIN
SELECT SUM(score) AS total_score
FROM student
WHERE name = @name
END
```
执行存储过程:
```
EXEC sp_zong '小明'
```
其中,`sp_zong`是存储过程的名称,`@name`是输入参数,`SUM(score)`是用于计算总成绩的聚合函数,`FROM student`是指定需要查询的表名,`WHERE name = @name`是根据输入参数进行筛选。执行存储过程时,需要传入一个学生姓名,存储过程会返回该学生的总成绩。