任务描述
本关任务:
- 使用 group by 语句结合聚集函数解决数据统计问题 ;
数据统计
一般的数据统计关系代数表达式如下:
其中L是属性集。含义是在属性集L上分组,分组后用函数fun运算 如
表示按性别sex的不同取值分组,再计算每个不同性别的学生人数。 假设有下面关系,利用上述分组计数统计则能得到: 男 2 女 2
下面轮到你们来试一试了。
编程要求
我们已经为你建好了数据库与数据表,并添加了相应的数据内容。 你只需根据右侧提示,完成以下任务:
-
1.补全右侧代码片段中 第一题 下 Begin-End 区间的代码,统计 course表中学分数(credit)大于2的课程门数;
-
2.补全右侧代码片段中 第二题 下 Begin-End 区间的代码,统计所有专业必修课(BT开头的课程代码)的学分总数。
-
3.补全右侧代码片段中 第三题 下 Begin-End 区间的代码,按课程类别统计每个类别课程的门数,如课程代码BT001,BT002都是专业必修课。
本题使用的关系如下: course(cno,cname,credit) 对应课程代码,课程名称,学分,其中课程代码前2位代表不同类型的课程,如 BT 代表 专业必修课,XZ 代表专业限选课。
测试说明
测试过程:
-
本关涉及到的测试文件是 step1_test.sh ,平台将运行用户补全的 step1.sql 文件,得到数据;
-
将得到的数据与答案比较,判断代码是否正确。
实验代码
USE test_wyy_db_guet
GOSET NOCOUNT ON-- ********** Begin ********** --
-- ********** 此处写第一题的SQL语句 ********** --
select count(credit)
from course
where course.credit>2;-- ********** End ********** --GO-- ********** Begin ********** --
-- ********** 此处写第二题的SQL语句 ********** --
select sum(credit)
from course
where cno like 'BT%';
-- ********** End ********** --GO-- ********** Begin ********** --
-- ********** 此处写第三题的SQL语句 ********** --
select substring(cno,1,2),count(cno)
from course
group by substring(cno,1,2);
-- ********** End ********** --GO