1.分组统计

1.COUNT( )函数

任务描述

本关任务:使用 COUNT() 函数统计学生总人数。

相关知识

为了完成本关任务,你需要掌握:如何使用 COUNT() 函数。

编程要求

根据提示,在右侧编辑器 Begin-End 处补充代码:

求学生总人数。

代码如下:select count(*)

from student;

第2关:COUNT( )函数2

任务描述

本关任务:求选修了课程的学生人数,输出列的别名为“选修人数”。

相关知识

在统计中使用distinct去掉重复行。

编程要求

根据提示,在右侧编辑器补充代码,求选修了课程的学生人数,输出列的别名为“选修人数”。

代码如下:

select count( distinct sno)'选修人数'

from score;

第3关:AVG( )函数、MAX函数和MIN函数

任务描述

本关任务:求选修各门课程的最高、最低与平均成绩。

相关知识

为了完成本关任务,你需要掌握:如何使用AVG()MAX()MIN()函数。

编程要求

根据提示,在右侧编辑器Begin-End处补充代码。 求选修各门课程的最高、最低与平均成绩。

代码如下:

  select  cno,AVG(grade),MAX(grade),MIN(grade)

  from score

  group by cno;

第4关:分组查询

任务描述

本关任务:求学生人数不足3人的系及其相应的学生数。

相关知识

为了完成本关任务,你需要掌握: 1.GROUP BY与聚合函数的结合使用; 2.GROUP BYSELECT指定的字段限制; 3.使用having进行分组后的筛选。

编程要求

根据提示,在右侧编辑器Begin-End处补充代码。

求学生人数不足3人的系及其相应的学生数。

代码如下:

  select distinct sdept ,COUNT(*)

  from student

  group by sdept

  having COUNT(*)<3;

第5关:排序

任务描述

本关任务:求计算机系中各班的学生人数,结果按班级人数倒序排列。

相关知识

1.使用order by 进行排序,asc选项为升序,desc 选项为降序; 2.排序时可以按多个字段进行排序,但总的顺序按第一个字段排。 3.第一个字段值相同的情况下,按第二个字段排序。

编程要求

根据提示,在右侧编辑器补充代码,求计算机系中各班的学生人数,结果按班级人数倒序排列。

select sdept,sclass,COUNT(*)

 from student

 WHERE SDEPT='计算机'

  group by sclass

 order by COUNT(*) desc;

2.基本查询

第1关:选择列查询

任务描述

本关任务:求2000年出生的学生的学号、姓名, 结果列别名为汉字。

相关知识

为了完成本关任务,你需要掌握: 1.如何获取数据表中指定字段的数据; 2.如何获取日期型字段中的年份:如 year(日期变量); 3.如何进行时期型值的比较:如birthday>='2000-01-01'。

编程要求

根据提示,在右侧编辑器 Begin-End 处补充代码:

求2000年出生的学生的学号、姓名, 结果列别名为汉字。

代码如下:

  select sno'学号',sname'姓名'

  from student

  where birthday>='2000-01-01'and birthday<='2001-01-01';

第2关:去除重复结果

任务描述

本关任务:求选修了课程的学生学号,结果表中学号显示唯一。

相关知识

为了完成本关任务,你需要掌握:

1.如何使用关键字 DISTINCT 检索数据表中不重复的内容。 2.成绩表的表结构如下: CREATE TABLE score ( sno CHAR(5) COMMENT '学号', cno CHAR(3) COMMENT '课程号', tno CHAR(6) COMMENT '教师号', grade DECIMAL(5,1) COMMENT '成绩', PRIMARY KEY(sno,cno,tno) COMMENT '主键约束', CONSTRAINT fk_sno FOREIGN KEY(sno) REFERENCES student(sno) COMMENT '外键约束', CONSTRAINT fk_cno FOREIGN KEY(cno) REFERENCES course(cno) COMMENT '外键约束', CONSTRAINT fk_tno FOREIGN KEY(tno) REFERENCES teach(tno) COMMENT '外键约束' );

编程要求

根据提示,在右侧编辑器 Begin-End 处补充代码:

求选修了课程的学生学号,结果表中学号显示唯一。

代码如下:

  select  distinct sno

  from score;

第3关:范围查询

任务描述

本关任务:使用 BETWEEN AND 或者运算符进行范围查询。

相关知识

为了完成本关任务,你需要掌握: 1.如何使用关键字 BETWEEN AND 提取数据表中的指定数据内容。 2.课程表的表结构如下: CREATE TABLE course( cno CHAR(3) PRIMARY KEY COMMENT '课程号', cname VARCHAR(50) COMMENT '课程名', ctime DECIMAL(3,0) COMMENT '学时', credit DECIMAL(3,1) COMMENT '学分' );

编程要求

根据提示,在右侧编辑器 Begin-End 处补充代码:

求学时在 1-50 之间的课程信息。

代码如下:

 select *

  from course

  where ctime between 1 and 50;

第4关:带IN关键字的查询

任务描述

本关任务:求不是计算机系或信息系学生。

相关知识

使用集合运算符in或not in

编程要求

根据提示,在右侧编辑器补充代码,求不是计算机系或信息系学生。

代码如下:

  select *

  from student

  where sdept not in ('计算机','信息');

第5关:匹配查询

任务描述

本关任务:求姓名长度至少是三个汉字且倒数第三个汉字必须是“马”的学生。

相关知识

为了完成本关任务,你需要掌握: 1.如何使用通配符 %_模糊匹配数据内容。2.执行匹配查找的关键字就是 LIKE。 3.下划线通配符 _ 只能模糊匹配 1个 字符, % 匹配0至多个字符。

编程要求

根据提示,在右侧编辑器 Begin-End 处补充代码;

求姓名长度至少是三个汉字且倒数第三个汉字必须是“马”的学生。

代码如下:

  select *

  from student

  where sname like '%马__';

第6关:多条件组合查询

任务描述

本关任务:求选修 052501 老师,成绩在 80 至 90 之间,学号为 96xxx 的学生的信息。

相关知识

这是一个多条件组合查询,要注意运算符的优先级别。

编程要求

根据提示,在右侧编辑器补充代码,求选修 052501 老师,成绩在 80 至 90 之间,学号为 96xxx 的学生的成绩信息。

代码如下:

 select *

 from score

 where tno='052501'and grade between 80 and 90 and score.sno like'96%';

第7关:空值查询

任务描述

本关任务:求没有成绩的学生的学号和课程号。

相关知识

这是一个空值查询,空值查询的比较运算的格式为:<字段变量> is [not] null。

编程要求

根据提示,在右侧编辑器补充代码,求没有成绩的学生的学号和课程号。

代码如下:

select sno,cno

from score

where grade  IS NULL;

如有错误,欢迎指出!谢谢。

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐