头歌Kingbase ES查询结果的排序

第1关:单因素排序

任务描述
本关任务:在 TESTDB 数据库中查询指定数据。

相关知识
ORDER BY 子句简介
当使用 SELECT 语句查询表中的数据时,结果集中显示的行的顺序可能与您的预期不符。
在某些情况下,结果集中显示的行按其物理存储在表中的顺序排列。 但是,如果查询优化器使用索引来处理查询,则行记录将显示为它们以索引键顺序存储。 因此,结果集中的行顺序未确定或不可预测。
查询优化器是数据库系统中的内置软件组件,用于确定 SQL 语句查询请求数据的最有效方式。
要准确指定结果集中的行顺序,请在 SELECT 语句中添加使用  ORDER BY 子句,进行单因素排序如下所示:

SELECT <字段名1>, <字段名2>,...,
FROM <表名>
[WHERE 筛选条件]
ORDER BY <字段名> <排序方式>;
在此语法中,ORDER BY 子句放在 FROM 子句之后。 如果 SELECT 语句包含 WHERE 子句,则 ORDER BY 子句必须放在 WHERE 子句之后。
要对结果集进行排序,请指定要排序的列以及排序顺序的类型:

升序(使用:ASC 表示)
降序(使用:DESC 表示)
如果未指定排序顺序,则数据库系统通常默认按升序( ASC )对结果集进行排序。
当在 ORDER BY 子句中包含多个列时,数据库系统首先根据第一列对结果集进行排序,然后根据第二列对排序的结果集进行排序,依此类推。

编程要求
查询软件学院班级的班号、班级名和人数,并按人数升序排列。

注意:列顺序为班号、班级名、人数,行顺序如题意。

teacher(教师表):

tno(工号)    tname(姓名)    sex(性别)    title(职称)    birthday(出生日期)
0014    李欣    男    教授    1969-07-25
0078    张云    女    副教授    1975-11-25
0118    王立    男    高级工程师    1985-04-28
0193    赵玲    女    讲师    1992-09-26
0213    杨梅    女    副教授    1986-06-07
0030    覃刚    男    副教授    1980-02-15
course(课程表):

cno(课程号)    cname(课程名)    credit(学分)    hours(学时)    examination(考核方式)
G001    线性代数    3    48    考试
R003    数据结构    3    48    考试
R009    离散数学    3    48    考试
S023    嵌入式系统与编程实验    1    32    考察
G012    大学物理    4    64    考试
class(班级表):

gno(班级号)    gname(班级名)    grade(年级)    dept(学院)    gnum(班级人数)
0211801    软件18级1班    18级    软件    37
0211903    软件19级3班    19级    软件    35
0131901    机械19级1班    19级    机械    37
teaching(教师授课表):

cno(课程号)    tno(工号)    gno(班级号)    term(开课学期)    classroom(教室)
G001    0078    0211903    1    A101
G001    0078    0131901    1    A101
R003    0118    0211801    2    S001
R009    0213    0211903    2    S002
S023    0193    0211801    1    S001
G012    0030    0131901    2    B003
测试说明
平台会对你编写的代码进行测试,结果正确即可通关。

开始你的任务吧,祝你成功!

---------- BEGIN ---------- 
SELECT gno, gname,gnum
FROM class
WHERE dept='软件'
ORDER BY gnum ASC;

---------- END ---------- 

第2关:多因素排序

任务描述
本关任务:在 TESTDB 数据库中查询指定数据。

相关知识
ORDER BY 子句简介
当使用 SELECT 语句查询表中的数据时,结果集中显示的行的顺序可能与您的预期不符。
在某些情况下,结果集中显示的行按其物理存储在表中的顺序排列。 但是,如果查询优化器使用索引来处理查询,则行记录将显示为它们以索引键顺序存储。 因此,结果集中的行顺序未确定或不可预测。
查询优化器是数据库系统中的内置软件组件,用于确定 SQL 语句查询请求数据的最有效方式。
要准确指定结果集中的行顺序,请在 SELECT 语句中添加使用  ORDER BY 子句,进行多因素排序如下所示:

SELECT <字段名1>, <字段名2>,...,
FROM <表名>
[WHERE 筛选条件]
ORDER BY <字段名> <排序方式>,
         <字段名> <排序方式>,...;
在此语法中,ORDER BY 子句放在 FROM 子句之后。 如果 SELECT 语句包含 WHERE 子句,则 ORDER BY 子句必须放在 WHERE 子句之后。
要对结果集进行排序,请指定要排序的列以及排序顺序的类型:

升序(使用:ASC 表示)
降序(使用:DESC 表示)
如果未指定排序顺序,则数据库系统通常默认按升序( ASC )对结果集进行排序。
当在 ORDER BY 子句中包含多个列时,数据库系统首先根据第一列对结果集进行排序,然后根据第二列对排序的结果集进行排序,依此类推。

编程要求
查询教师授课情况,结果先按学期升序排列,再按工号降序排列。

注意:查询列顺序请与下表中保持一致,行顺序如题意。

teacher(教师表):

tno(工号)    tname(姓名)    sex(性别)    title(职称)    birthday(出生日期)
0014    李欣    男    教授    1969-07-25
0078    张云    女    副教授    1975-11-25
0118    王立    男    高级工程师    1985-04-28
0193    赵玲    女    讲师    1992-09-26
0213    杨梅    女    副教授    1986-06-07
0030    覃刚    男    副教授    1980-02-15
course(课程表):

cno(课程号)    cname(课程名)    credit(学分)    hours(学时)    examination(考核方式)
G001    线性代数    3    48    考试
R003    数据结构    3    48    考试
R009    离散数学    3    48    考试
S023    嵌入式系统与编程实验    1    32    考察
G012    大学物理    4    64    考试
class(班级表):

gno(班级号)    gname(班级名)    grade(年级)    dept(学院)    gnum(班级人数)
0211801    软件18级1班    18级    软件    37
0211903    软件19级3班    19级    软件    35
0131901    机械19级1班    19级    机械    37
teaching(教师授课表):

cno(课程号)    tno(工号)    gno(班级号)    term(开课学期)    classroom(教室)
G001    0078    0211903    1    A101
G001    0078    0131901    1    A101
R003    0118    0211801    2    S001
R009    0213    0211903    2    S002
S023    0193    0211801    1    S001
G012    0030    0131901    2    B003
测试说明
平台会对你编写的代码进行测试,结果正确即可通关。

开始你的任务吧,祝你成功!

---------- BEGIN ---------- 
SELECT cno,tno,gno,term,classroom
FROM teaching
ORDER BY term ASC,
         tno DESC;

---------- END ---------- 


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值