您的位置:首页 > 数据库 > Oracle

oracle 给查询结果排序

2017-07-06 20:22 260 查看
一、以指定的次序返回查询结果

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 湖州出差)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: