SQL经典实例-2查询结果排序

2.1以指定顺序返回查询结果(显示编号部门为10的员工的姓名、职位和工资,并根据工资从低到高排序)
select ename,job,sal from emp order by sal asc;
select ename,job,sal from emp order by 3 asc;(3指第三列)
2.2多字段排序(按照deptno升序,sal降序)
select deptno,ename,sal from emp order by deptno asc,sal desc;
2.3依据子串排序(按照职位字符的最后三个字符对检索结果进行排序)
select ename,job from emp order by substr(job,length(job)-2);
2.4对含有字母和数字的列排序(有混含了字母和数字的数据,希望按照字母部分或者数字部分来排序。如下所示的视图)
create view V as select ename ||’ ‘||deptno as data from emp;
select * from V;
在这里插入图片描述
按照数字:select data from V order by replace(data,replace(translate(data,‘0123456789’,’##########’),’#’,’’),’’);
按照字母:select data from V order by replace(translate(data,‘0123456789’,’##########’),’#’,’’);
select translate(data,‘0123456789’,’##########’)from V; //SMITH ##
select replace(translate(data,‘0123456789’,’##########’),’#’,’’) from V;//SMITH
select replace(data,replace(translate(data,‘0123456789’,’##########’),’#’,’’),’’) from V;//20
replace和trannslate都是替代函数:replace针对的是字符串,translate针对的是单个字符
2.5排序示对null的处理(按照emp表的comm列对查询结果进行排序,但该字段可能为null,需要将null排在后面)
select ename,comm from(select ename,comm,case when comm is null then 1 else 0 end as is_null from emp) order by is_null,comm;
select ename,comm from emp order by comm nulls last;(oracle9版本之后)
2.6依据条件逻辑动态调整排序项(如果job等于salesman,按照comm排序,否则按照sal排序)
select ename,job,comm,sal from emp order by case when job=‘SALESMAN’ then comm else sal end;

                                            --《SQL经典实例》笔记
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值