对学生-课程数据库编写存储过程,完成下述功能:(1)统计离散数学的成绩分布情况,即按照各分数段统计人数。(2)统计任意一门课的平均成绩。(3)将学生选课成绩从百分制改为等级制(即A、B、C、D、E)
时间: 2024-02-07 22:02:09 浏览: 102
好的,针对你的问题,我来依次回答:
(1) 统计离散数学的成绩分布情况,即按照各分数段统计人数:
```sql
CREATE PROCEDURE score_distribution()
BEGIN
SELECT COUNT(*) AS num,
CASE
WHEN score >= 90 THEN 'A'
WHEN score >= 80 THEN 'B'
WHEN score >= 70 THEN 'C'
WHEN score >= 60 THEN 'D'
ELSE 'E'
END AS grade
FROM student_course
WHERE course_name = '离散数学'
GROUP BY grade;
END;
```
(2) 统计任意一门课的平均成绩:
```sql
CREATE PROCEDURE average_score(IN course VARCHAR(20))
BEGIN
SELECT AVG(score) AS avg_score
FROM student_course
WHERE course_name = course;
END;
```
(3) 将学生选课成绩从百分制改为等级制(即A、B、C、D、E):
```sql
CREATE PROCEDURE score_grade_trans()
BEGIN
UPDATE student_course
SET grade =
CASE
WHEN score >= 90 THEN 'A'
WHEN score >= 80 THEN 'B'
WHEN score >= 70 THEN 'C'
WHEN score >= 60 THEN 'D'
ELSE 'E'
END;
END;
```
希望这些存储过程能够帮助你完成你的数据库操作。如果你还有其他问题,可以随时问我。
阅读全文