一、以指定的次序返回查询结果
1.在实际提取数据或生成报表时, 一般都要根据一定的顺序查看,比如,想查看单位所雇员工的信息。两种写法如下:
1.1SELECT e.empno,e.ename,e.hiredate FROM emp e WHERE e.deptno=20 ORDER BY e.hiredate;
1.2SELECT e.empno,e.ename,e.hiredate FROM emp e WHERE e.deptno=30 ORDER BY 3;
查询结果跟上图是一样的(1.1)
二、按多个字段进行排序(把部门编号升序排列,工资倒序排列)
三、按字串进行排序
3.有的时候需要把顾客的电话号码的尾号按照顺序进行排列,如果按照这种方法排序,应该怎么做呢?
方法是:通过函数取出后面几位所需的信息就可以了如下:
表格式:
3.1先把电话号码的后5位取出来:
SELECT he.phone_number,SUBSTR(phone_number,-5) AS 尾号 FROM hr_employees he
3.2把取出来的尾号进行排序
SELECT he.phone_number,SUBSTR(phone_number,-5) AS 尾号 FROM hr_employees he order BY 2;
四、按数字和字母混合字符串中字母进行排序
4.通过EMP表快速创建示例表如下:
DROP VIEW v1;
CREATE OR REPLACE VIEW v1
AS
SELECT e.empno ||' '|| e.ename AS DATA FROM emp e;
4.1 首先在做题之前一定要理清自己的思路,如果让字母进行排序必须先把字母取出来,怎么取,如下:
SELECT V."DATA",TRANSLATE(DATA,'- 1234567890','-') STATUS FROM v1 v;
4.2 取出来之后,在进行字母顺序排序
SELECT v."DATA",TRANSLATE(DATA,'- 1234567890','-') AS STATUS FROM v1 v ORDER BY 2;
五、处理排序空值(需求:1、把空值排序在前面(NULLS LAST)2、把空值排序在后面())
5.1 把空值排序在前面
SELECT e.ename,e.comm FROM emp e ORDER BY 2 NULLS LAST;
5.2 把空值排序在后面
SELECT e.empno,e.ename,e.comm FROM emp e ORDER BY 3 NULLS FIRST;
六、根据条件取不同列中的值进行排序
比喻想要把1000到2000美元之间的归为一个等级,然后按照等级排序,怎么做呢?如下:
select * from (SELECT e.empno,e.ename,e.sal,CASE WHEN e.sal>500 AND e.sal<3000 THEN 1 ELSE 2 END AS 等级,e.deptno FROM emp e) order by 等级;
这边文章主要也是复习一下,我个人对排序的认识。(2017-07-06 湖州出差)