对如下学生-课程数据库编写存储过程,完成下述功能:
(1)统计离散数学的成绩分布,即按照各分数段统计人数
(2)统计任意一门课程的平均成绩
(3)将学生选课成绩从百分制改为等级制
原始数据如下图:
s表:
数据如下:
Sno Sname Age Sex 204058 刘杰 23 女 304323 刘瑞 22 女 313537 熊俊 18 男 386442 侯瑞 22 女 429632 石杨 26 女 439813 杨萍 24 女 518606 阮宁 18 女 587205 况阳 20 男 703334 武利 24 女 724033 蔡宇 24 女 834245 李艳 18 女 868422 叶燕 24 女 943432 李玲 29 男 989869 马婷 22 男
sc表:
数据如下:
Sno Cno Grade 204058 JK-000 35 304323 JK-000 77 313537 JK-000 82 386442 JB-220 66 429632 JK-000 55 518606 EE-205 0 587205 JK-000 5 703334 JK-000 99 724033 JK-000 43 834245 JK-000 68 868422 JK-000 92 943432 EE-205 75
c表:
数据如下:
Cno Cname Teacher CS-530 数据分析 刘鹏 EE-205 数据库 李芳 JB-220 数字电路 刘杰 JK-000 离散数学 李达
1.统计离散数学的成绩分布,即按照各分数段统计人数
SELECT
COUNT(a.score_range="0-60" OR NULL) '0-60'
,COUNT(a.score_range="60-80" OR NULL) '60-80'
,COUNT(a.score_range="80-100" OR NULL) '80-100'
FROM (
SELECT sc.cno,
CASE
WHEN sc.Grade >=0 AND sc.Grade <60 THEN "0-60"
WHEN sc.Grade >=60 AND sc.Grade <80 THEN "60-80"
WHEN sc.Grade >=80 AND sc.Grade <=100 THEN "80-100"
END AS score_range
FROM sc,c WHERE c.`Cname`='离散数学' AND c.`Cno`=sc.`Cno`
) a;
2.统计任意一门课程的平均成绩
SELECT AVG(grade) FROM sc
WHERE cno='JK-000';
3.将学生选课成绩从百分制改为等级制
SELECT sc.sno,sc.cno,
CASE
WHEN sc.Grade >=0 AND sc.Grade <60 THEN "F"
WHEN sc.Grade >=60 AND sc.Grade <70 THEN "D"
WHEN sc.Grade >=70 AND sc.Grade <80 THEN "C"
WHEN sc.Grade >=80 AND sc.Grade <90 THEN "B"
WHEN sc.Grade >=90 AND sc.Grade <=100 THEN "A"
END AS score_range
FROM sc ORDER BY score_range;