表结构如下:
学生表:Student
字段名 | 类型 | 主码 | 备注 |
---|---|---|---|
Sno | char(10) | Y | 学号 |
Sname | varchar(20) | 姓名 | |
Ssex | char(2) | 性别 | |
Sage | smallint | 年龄 | |
Sdept | varchar(20) | 所在系 |
课程表:Course
字段名 | 类型 | 主码 | 备注 |
---|---|---|---|
Cno | char(10) | Y | 课程号 |
Cname | varchar(20) | 课程名 | |
Cpno | char(10) | 先行课号 | |
Ccredit | smallint | 课程学分 |
学生选课表:SC
字段名 | 类型 | 主码 | 备注 |
---|---|---|---|
Sno | char(10) | Y | 学号 |
Cno | char(10) | Y | 课程号 |
Grade | smallint | 成绩 |
任务描述
本关任务:使用聚合函数做查询练习
相关知识
使用SQL语言中的 Select 语句。
使用聚合函数完成查询练习
SQL语句中关键词大小写不区分。考虑到本系统的测评规则,在题目中要求对列名小写的,请务必按要求书写,否则会评判为错误!
性别用’m’表示男,’f’表示女
实验完成要求
根据代码区的提示,将查询数据的SQL语句书写在对应的代码区中。
注:请务必将select子句中出现的列名小写,顺序必须和题目要求一致
1、查询‘001’号的学生不及格的课程数,列出不及格课程数(列名为:scnt)
2、查询每个学生不及格的课程数,列出学号和不及格课程数(列名为:scnt)。
3、查询每个系女同学的平均年龄,列出所在系和平均年龄(列名为:sageavg)。
测试说明
书写查询语句后,直接测试。
sql语句
sql1:
USE CS_yx_DB
GO
SET NOCOUNT ON
-- ********** Begin ********** --
-- ********** 此处写“1、查询‘001’号的学生不及格的课程数,列出不及格课程数(列名为:scnt)”的SQL语句 ********** --
select count(Sno) as scnt from sc
where Sno='001' and Grade<60
group by Sno;
-- ********** End ********** --
GO
sql2:
USE CS_yx_DB
GO
SET NOCOUNT ON
-- ********** Begin ********** --
-- ********** 此处写“2、查询每个学生不及格的课程数,列出学号和不及格课程数(列名为:scnt)”的SQL语句 ********** --
select sno,Count(Sno) as scnt from sc
where grade<60
group by Sno;
-- ********** End ********** --
GO
sql3:
USE CS_yx_DB
GO
SET NOCOUNT ON
-- ********** Begin ********** --
-- ********** 此处写“3、查询每个系女同学的平均年龄,列出所在系和平均年龄(列名为:sageavg)”的SQL语句 ********** --
select sdept,avg(sage) as sageavg from Student
where ssex='f'
group by sdept;
-- ********** End ********** --
GO
任务描述
本关任务:使用聚合函数做查询练习
相关知识
使用SQL语言中的 Select 语句。
使用聚合函数完成查询练习
SQL语句中关键词大小写不区分。考虑到本系统的测评规则,在题目中要求对列名小写的,请务必按要求书写,否则会评判为错误!
性别用’m’表示男,’f’表示女
实验完成要求
根据代码区的提示,将查询数据的SQL语句书写在对应的代码区中。
注:请务必将select子句中出现的列名小写,顺序必须和题目要求一致
1、查询Niki(姓名)同学的平均分,列出平均分(列名为:savg)
2、查询CS系每个同学的平均分,列出学号和平均分(列名为:savg)。
3、查询学分为2的每门课程的选课人数,列出课程号和选课人数(列名为:scnt)。
测试说明
书写查询语句后,直接测试。
sql语句
sql1:
USE CS_yx_DB
GO
SET NOCOUNT ON
-- ********** Begin ********** --
-- ********** 此处写“1、查询Niki(姓名)同学的平均分,列出平均分(列名为:savg)”的SQL语句 ********** --
select avg(grade) as savg from Sc
where Sno in (select sno from Student where Sname='Niki');
-- ********** End ********** --
GO
sql2:
USE CS_yx_DB
GO
SET NOCOUNT ON
-- ********** Begin ********** --
-- ********** 此处写“2、查询CS系每个同学的平均分,列出学号和平均分(列名为:savg)”的SQL语句 ********** --
select sno,avg(grade) as savg from Sc
where Sno in (select Sno from Student where Sdept='CS')
group by Sno;
-- ********** End ********** --
GO
sql3:
USE CS_yx_DB
GO
SET NOCOUNT ON
-- ********** Begin ********** --
-- ********** 此处写“3、查询学分为2的每门课程的选课人数,列出课程号和选课人数(列名为:scnt)”的SQL语句 ********** --
select cno,count(Sno) as scnt from Sc
where Cno in (select Cno from Course where Ccredit=2)
group by Cno;
-- ********** End ********** --
GO
任务描述
本关任务:使用聚合函数做查询练习
相关知识
使用SQL语言中的 Select 语句。
使用聚合函数完成查询练习
SQL语句中关键词大小写不区分。考虑到本系统的测评规则,在题目中要求对列名小写的,请务必按要求书写,否则会评判为错误!
性别用’m’表示男,’f’表示女
实验完成要求
根据代码区的提示,将查询数据的SQL语句书写在对应的代码区中。
注:请务必将select子句中出现的列名小写,顺序必须和题目要求一致
1、查询平均分最高的学生的姓名。
2、查询不及格人数大于等于2人的课程,列出课程号,课程名,不及格人数(列名为scnt)
测试说明
书写查询语句后,直接测试。
sql语句
sql1:
USE CS_yx_DB
GO
SET NOCOUNT ON
-- ********** Begin ********** --
-- ********** 此处写“1、查询平均分最高的学生的姓名”的SQL语句 ********** --
select sname from Student
where Sno in (select Sno from Sc
group by Sno
having avg(grade)>=all(select avg(grade) from Sc
group by Sno));
-- ********** End ********** --
GO
sql2:
USE CS_yx_DB
GO
SET NOCOUNT ON
-- ********** Begin ********** --
-- ********** 此处写“2、查询不及格人数大于等于2人的课程,列出课程号,课程名,不及格人数(列名为scnt)”的SQL语句 ********** --
select Course.cno,cname,Count(sno) as scnt from Sc,Course
where Course.Cno=Sc.Cno and Grade<60
group by Course.cno,Cname
having Count(sno)>=2;
-- ********** End ********** --
GO
任务描述
本关任务:使用聚合函数做查询练习
相关知识
使用SQL语言中的 Select 语句。
使用聚合函数完成查询练习
SQL语句中关键词大小写不区分。考虑到本系统的测评规则,在题目中要求对列名小写的,请务必按要求书写,否则会评判为错误!
性别用’m’表示男,’f’表示女
实验完成要求
根据代码区的提示,将查询数据的SQL语句书写在对应的代码区中。
注:请务必将select子句中出现的列名小写,顺序必须和题目要求一致
1、查询E系平均成绩最高的同学的姓名,列出姓名。
测试说明
书写查询语句后,直接测试。
sql语句
USE CS_yx_DB
GO
SET NOCOUNT ON
-- ********** Begin ********** --
-- ********** 此处写“1、查询E系平均成绩最高的同学的姓名,列出姓名”的SQL语句 ********** --
select sname from Sc,Student
where Sc.Sno=Student.Sno and Sdept ='E'
group by Sname
having avg(grade)>=all(select avg(grade) from Sc
where sno in (select sno from Student where Sdept='E')
group by sno );
-- ********** End ********** --
GO
注:答案不唯一,仅供参考。