数据库习题

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


在这里插入图片描述

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

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值