Oracle查询排序asc/desc 多列 order by
查询结果的排序
显示EMP表中不同的部门编号。
如果要在查询的同时排序显示结果,可以使用如下的语句:
- SELECT 字段列表
FROM 表名
WHERE 条件 - ORDER
BY 字段名1 [ASC|DESC][,字段名2
[ASC|DESC]...];
- SELECT 字段列表 FROM 表名 WHERE 条件
- ORDER BY 字段名1 [ASC|DESC][,字段名2 [ASC|DESC]...];
ORDER BY从句后跟要排序的列。ORDER BY 从句出现在SELECT语句的最后。
排序有升序和降序之分,ASC表示升序排序,DESC表示降序排序。如果不指明排序顺序,默认的排序顺序为升序ASC。如果要降序,必须书写DESC关键字
1.升序排序
【训练1】 查询雇员姓名和工资,并按工资从小到大排序。
输入并执行查询:
- SELECT ename, sal
FROM emp
ORDER
BY sal;
- SELECT ename, sal FROM emp ORDER BY sal;
执行结果为:
- ENAME SAL
- ------------- --------------------
- SMITH 800
- JAMES 950
- ENAME SAL
- ------------- --------------------
- SMITH 800
- JAMES 950
注意:若省略ASC和DESC,则默认为ASC,即升序排序。
2.降序排序
【训练2】 查询雇员姓名和雇佣日期,并按雇佣日期排序,后雇佣的先显示。
输入并执行查询:
- SELECT ename,hiredate
FROM emp
ORDER
BY hiredate
DESC;
- SELECT ename,hiredate FROM emp ORDER BY hiredate DESC;
结果如下:
- ENAME HIREDATE
- ------------- -----------------------
- ADAMS 23-5月 -87
- SCOTT 19-4月 -87
- MILLER 23-1月 -82
- JAMES 03-12月-81
- FORD 03-12月-81
- ENAME HIREDATE
- ------------- -----------------------
- ADAMS 23-5月 -87
- SCOTT 19-4月 -87
- MILLER 23-1月 -82
- JAMES 03-12月-81
- FORD 03-12月-81
注意: DESC表示降序排序,不能省略。
3.多列排序
可以按多列进行排序,先按第一列,然后按第二列、第三列......。
【训练3】 查询雇员信息,先按部门从小到大排序,再按雇佣时间的先后排序。
输入并执行查询:
- SELECT ename,deptno,hiredate
FROM emp
ORDER
BY deptno,hiredate;
- SELECT ename,deptno,hiredate FROM emp ORDER BY deptno,hiredate;
结果如下:
- ENAME DEPTNO HIREDATE
- ---------------- ----------------- ---------------
- CLARK 10 09-6月 -81
- KING 10 17-11月-81
- MILLER 10 23-1月 -82
- SMITH 20 17-12月-80
- JONES 20 02-4月 -81
- FORD 20 03-12月-81
- SCOTT 20 19-4月 -87
- ENAME DEPTNO HIREDATE
- ---------------- ----------------- ---------------
- CLARK 10 09-6月 -81
- KING 10 17-11月-81
- MILLER 10 23-1月 -82
- SMITH 20 17-12月-80
- JONES 20 02-4月 -81
- FORD 20 03-12月-81
- SCOTT 20 19-4月 -87
说明:该排序是先按部门升序排序,部门相同的情况下,再按雇佣时间升序排序。
4.在排序中使用别名
如果要对计算列排序,可以为计算列指定别名,然后按别名排序。
【训练4】 按工资和工作月份的乘积排序。
输入并执行查询:
- SELECT empno, ename, sal*Months_between(sysdate,hiredate)
AS total
FROM emp - ORDER
BY total;
- SELECT empno, ename, sal*Months_between(sysdate,hiredate) AS total FROM emp
- ORDER BY total;
执行结果为:
- EMPNO ENAME TOTAL
- ------------ ------------- ----------------------
- 7876 ADAMS 221526.006
- 7369 SMITH 222864.661
- 7900 JAMES 253680.817
- 7654 MARTIN 336532.484
- EMPNO ENAME TOTAL
- ------------ ------------- ----------------------
- 7876 ADAMS 221526.006
- 7369 SMITH 222864.661
- 7900 JAMES 253680.817
- 7654 MARTIN 336532.484
sysdate获取当前日期。
练习题:
1.SQL语言中用来创建、删除及修改数据库对象的部分被称为:
A. 数据库控制语言(DCL)
B. 数据库定义语言(DDL)
C. 数据库操纵语言(DML)
D. 数据库事务处理语言
2.执行以下查询,表头的显示为:
- SELECT sal
"Employee Salary"
FROM emp
- SELECT sal "Employee Salary" FROM emp
A. EMPLOYEE SALARY B. employee salary
C. Employee Salary D. "Employee Salary“
3.执行如下两个查询,结果为:
- SELECT ename
name,sal salary
FROM emp
order
by salary; - SELECT ename
name,sal
"SALARY"
FROM emp
order
by sal
ASC;
- SELECT ename name,sal salary FROM emp order by salary;
- SELECT ename name,sal "SALARY" FROM emp order by sal ASC;
A. 两个查询结果完全相同
B. 两个查询结果不相同
C. 第一个查询正确,第二个查询错误
D. 第二个查询正确,第一个查询错误
4.参考本章的emp表的内容执行下列查询语句,出现在第一行上的人是:
- SELECT ename
FROM emp
WHERE deptno=10
ORDER
BY sal
DESC;
- SELECT ename FROM emp WHERE deptno=10 ORDER BY sal DESC;
A. SMITH B. KING
C. MILLER D. CLARK
5.哪个函数与||运算有相同的功能:
A. LTRIM B. CONCAT
C. SUBSTR D. INSTR
6.执行以下语句后,正确的结论是:
- SELECT empno,ename
FROM emp
WHERE hiredate<to_date('04-11月-1980')-100
- SELECT empno,ename FROM emp WHERE hiredate<to_date('04-11月-1980')-100
A. 显示给定日期后100天以内雇佣的雇员信息
B. 显示给定日期前100天以内雇佣的雇员信息
C. 显示给定日期100天以后雇佣的雇员信息
D. 显示给定日期100天以前雇佣的雇员信息
7.执行以下语句出错的行是:
- SELECT deptno,max(sal)
FROM emp - WHERE job
IN('CLERK','SALEMAN','ANALYST') - GROUP
BY deptno - HAVING sal>1500;
- SELECT deptno,max(sal) FROM emp
- WHERE job IN('CLERK','SALEMAN','ANALYST')
- GROUP BY deptno
- HAVING sal>1500;
A. 第一行 B. 第二行
C. 第三行 D. 第四行
8.执行以下语句出错的行是:
- SELECT deptno,max(avg(sal))
- FROM emp
- WHERE sal>1000
- Group
by deptno;
- SELECT deptno,max(avg(sal))
- FROM emp
- WHERE sal>1000
- Group by deptno;
A. 第一行 B. 第二行
C. 第三行 D. 第四行
9.执行以下语句出错的行是:
- SELECT deptno,dname,ename,sal
- FROM emp,dept
- WHERE emp.deptno=dept.deptno
- AND sal>1000;
- SELECT deptno,dname,ename,sal
- FROM emp,dept
- WHERE emp.deptno=dept.deptno
- AND sal>1000;
A. 第一行 B. 第二行
C. 第三行 D. 第四行
10. 以下语句出错,哪种改动能够正确执行:
- SELECT deptno,
max(sal) - FROM emp
- GROUP
BY deptno - WHERE max(sal)>2500;
- SELECT deptno, max(sal)
- FROM emp
- GROUP BY deptno
- WHERE max(sal)>2500;
A. 将WHERE和GROUP BY 语句顺序调换一下
B. 将WHERE max(sal)>2500语句改成HAVING max(sal)>2500
C. 将WHERE max(sal)>2500语句改成WHERE sal>2500
D. 将WHERE max(sal)>2500语句改成HAVING sal>2500
11. 以下语句的作用是:
- SELECT ename,sal
FROM emp - WHERE sal<(SELECT
min(sal)
FROM emp)+1000;
- SELECT ename,sal FROM emp
- WHERE sal<(SELECT min(sal) FROM emp)+1000;
A. 显示工资低于1000元的雇员信息
B. 将雇员工资小于1000元的工资增加1000后显示
C. 显示超过最低工资1000元的雇员信息
D. 显示不超过最低工资1000元的雇员信息
12. 以下语句的作用是:
- SELECT job
FROM emp
WHERE deptno=10 - MINUS
- SELECT job
FROM emp
WHERE deptno=20;
- SELECT job FROM emp WHERE deptno=10
- MINUS
- SELECT job FROM emp WHERE deptno=20;
A. 显示部门10的雇员职务和20的雇员职务
B. 显示部门10和部门20共同的雇员职务
C. 显示部门10和部门20不同的雇员职务
D. 显示在部门10中出现,在部门20中不出现的雇员职务
Oracle查询排序asc/desc 多列 order by的更多相关文章
- Map根据value排序ASC DESC
原文:http://blog.csdn.net/k21325/article/details/53259180 需求有点刁钻,写关键词组合匹配标题的时候,遇到关键词像这样 XXX XXX 1222 X ...
- 注意使用 BTREE 复合索引各字段的 ASC/DESC 以优化 order by 查询效率
tbl_direct_pos_201506 表有 190 万数据.DDL: CREATE TABLE `tbl_direct_pos_201506` ( `acq_ins_code` char(13) ...
- Oracle查询如何才能行转列?-sunziren
原创文章,转载务必注明出处. 今天工作的时候,碰到一个问题,涉及oracle行转列,用了半小时解决,因此在这里写个博客记录一下解决办法. 原数据库表的数据是: 想要达到的效果是: 经过思考,这是一个o ...
- oracle查询排序后的前几条记录
select * from (select * from table order by 字段名 desc) where rownum<你要查的记录条数,这样才能符合条件.
- Oracle查询结果中:一列中相同的值或一列中重复的值,只显示一次
http://www.itpub.net/thread-1768915-1-1.html 问题: CREATE TABLE test(ob_id VARCHAR(32),ob_name VARCHAR ...
- PostgreSQL 数据库NULL值的默认排序行为与查询、索引定义规范 - nulls first\last, asc\desc
背景 在数据库中NULL值是指UNKNOWN的值,不存储任何值,在排序时,它排在有值的行前面还是后面通过语法来指定. 例如 -- 表示null排在有值行的前面 select * from tbl or ...
- Oracle的排序和限制条件(order by 和where)
1.Order by 子句的使用 select column.... from .... order by ... 1) Order by子句在整个 select语句中的位置: 始终位于最后 2) o ...
- MySQL之单表查询 一 单表查询的语法 二 关键字的执行优先级(重点) 三 简单查询 四 WHERE约束 五 分组查询:GROUP BY 六 HAVING过滤 七 查询排序:ORDER BY 八 限制查询的记录数:LIMIT 九 使用正则表达式查询
MySQL之单表查询 阅读目录 一 单表查询的语法 二 关键字的执行优先级(重点) 三 简单查询 四 WHERE约束 五 分组查询:GROUP BY 六 HAVING过滤 七 查询排序:ORDER B ...
- mysql 数据操作 单表查询 查询排序: order by
如果不指定排序 默认是按照id字段 从小到大排序的 升序 mysql> select * from employee; +----+------------+--------+-----+-- ...
随机推荐
- BZOJ_3781_小B的询问_莫队
BZOJ_3781_小B的询问_莫队 Description 小B有一个序列,包含N个1~K之间的整数.他一共有M个询问,每个询问给定一个区间[L..R],求Sigma(c(i)^2)的值,其中i的值 ...
- eclipse导入jsp文件第一行报错
- C++之pair与make_pair
std::pair主要的作用是将两个数据组合成一个数据,两个数据可以是同一类型或者不同类型. 例如std::pair<int,float> 或者 std::pair<double,d ...
- pytest用例setup和teardown
函数式以下两种: setup_function/teardown_function 每个用例开始和结束调用一次 setup_module/teardown_module setup_modu ...
- android 怎么实现跑马灯效果
自定义控件 FocusedTextView, 使android系统误以为它拥有焦点 public class FocusedTextView extends TextView { public Foc ...
- jquery data 选择器 表格序列化serialize()
data()在元素上存放或者读取数据,返回jquery对象. demo: <div data-obj="{'name':'zhangsan','age':20}">&l ...
- Java中的双重检查(Double-Check)详解
在 Effecitve Java 一书的第 48 条中提到了双重检查模式,并指出这种模式在 Java 中通常并不适用.该模式的结构如下所示: ? 1 2 3 4 5 6 7 8 9 10 public ...
- html5 滚动小球
<html> <head> <meta charset="utf-8"/> </head> <body onkeydown=& ...
- atof,atoi,atol,strtod,strtol,strtoul
字符串处理函数 atof 将字串转换成浮点型数 atoi 字符串转换成整型数 atol 函数名: atol 功 能: 把字符串转换成长整型数 用 法: long atol(const char *np ...
- 使用Try.NET创建可交互.NET文档
原文地址:Create Interactive .NET Documentation with Try .NET 原文作者:Maria 译文地址:https://www.cnblogs.com/lwq ...