数据库习题

对如下学生-课程数据库编写存储过程,完成下述功能:
(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 男

数据库习题_第1张图片

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

数据库习题_第2张图片

c表:

数据如下:
Cno Cname Teacher CS-530 数据分析 刘鹏 EE-205 数据库 李芳 JB-220 数字电路 刘杰 JK-000 离散数学 李达

数据库习题_第3张图片


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;

数据库习题_第4张图片

2.统计任意一门课程的平均成绩

SELECT AVG(grade) FROM sc
WHERE cno='JK-000';

数据库习题_第5张图片

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;


数据库习题_第6张图片

语句:case when … then as的语法格式

你可能感兴趣的:(练习题,数据库,database)