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 湖州出差)
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 湖州出差)
相关文章推荐
- 数据库查询排序使用随机排序结果示例(Oracle/MySQL/MS SQL Server)
- Oracle查询优化-02给查询结果排序
- 数据库查询排序使用随机排序结果示例(Oracle/MySQL/MS SQL Server)
- oracle 查询结果的排序,ASC/DESC,升序,降序,多列排序,ORDER BY
- oracle开发之<<SQL Cookbook>>学习笔记整理:第二章 查询结果排序
- Oracle中实现查询结果按照in中条件排序 InStr函数
- oracle查询结果指定排序规则
- 数据库查询排序使用随机排序结果示例(Oracle/MySQL/MS SQL Server)
- 用ORACLE 中伪列rownum对查询结果进行排序
- Oracle优化查询改写(第二章-给查询结果排序)
- 数据库SQL中对查询结果排序排列序号编号,Oracle分析函数 rank,dense_rank,row_number使用和区别
- Oracle学习(3)---数据定义语言---查询结果排序
- oracle 查询结果对空值的排序
- oracle 查询结果的排序,ASC/DESC,升序,降序,多列排序,ORDER BY,一些练习题
- SQL SERVER中对查询结果随机排序
- 如何在Oracle中查询排序后的第一条记录
- ORACLE下把查询的结果以xml输出
- 查询结果的动态排序(4)
- 查询结果的动态排序(5)
- 查询结果的动态排序