sqlserver存储过程实例对成绩进行分析
时间: 2023-09-09 07:13:11 浏览: 106
sql存储过程实例
假设有以下成绩表格:
| 学生ID | 课程ID | 成绩 |
|--------|--------|------|
| 1 | 1 | 85 |
| 1 | 2 | 90 |
| 2 | 1 | 75 |
| 2 | 2 | 95 |
| 3 | 1 | 80 |
| 3 | 2 | 85 |
我们可以创建一个存储过程来分析成绩情况:
```
CREATE PROCEDURE analyze_scores
AS
BEGIN
-- 查询平均成绩
SELECT AVG(成绩) AS 平均成绩
FROM 成绩表格;
-- 查询最高成绩和对应的学生和课程
SELECT TOP 1 成绩表格.成绩 AS 最高成绩, 学生表格.姓名 AS 学生姓名, 课程表格.课程名称 AS 课程名称
FROM 成绩表格
INNER JOIN 学生表格 ON 成绩表格.学生ID = 学生表格.ID
INNER JOIN 课程表格 ON 成绩表格.课程ID = 课程表格.ID
ORDER BY 成绩 DESC;
-- 查询不及格的学生和课程
SELECT 学生表格.姓名 AS 学生姓名, 课程表格.课程名称 AS 课程名称
FROM 成绩表格
INNER JOIN 学生表格 ON 成绩表格.学生ID = 学生表格.ID
INNER JOIN 课程表格 ON 成绩表格.课程ID = 课程表格.ID
WHERE 成绩 < 60;
END
```
该存储过程查询了成绩表格中的平均成绩、最高成绩及对应的学生和课程,以及不及格的学生和课程。可以通过调用该存储过程来分析成绩情况:
```
EXEC analyze_scores;
```
执行结果:
```
平均成绩
------
85.0
最高成绩 学生姓名 课程名称
------ ------ ------
95 学生2 课程2
学生姓名 课程名称
------ ------
```
阅读全文