资讯专栏INFORMATION COLUMN

SQL经典实例(二)查询结果排序

ky0ncheng / 520人阅读

摘要:依据子串排序从表检索员工的名字和职位,并且按照职位字段的最后两个字符对检索结果进行排序对含有字母和数字的列排序考虑如下视图以或者作为排序项。

依据子串排序

从emp表检索员工的名字和职位,并且按照职位字段的最后两个字符对检索结果进行排序
MySQL & Oracle

select ename, job
    from emp
  order by substr(job, length(job)-2);
对含有字母和数字的列排序

考虑如下视图:

create view V
as 
select ename || " " deptno as data
    from emp;
select * from V;

以DEPTNO或者ENAME作为排序项。使用REPLACETRANSLATE函数修改用于排序的字符串
Oracle 按DEPTNO排序

select data
    from V
order by replace(data,
         replace(
         translate(data,"0123456789","##########"),"#",""),"");

Oracle 按ENAME排序

select data
    from V
order by replace(
        translate(data,"0123456789","##########"),"#","");
排序时对NULL值的处理

通用方式:使用case when语句标记NULL值与非NULL值

select ename, sal, comm from (
        select ename, sal, comm,
            case when comm is null then 0 else 1 end as is_null
        from emp
    ) x
order by is_null desc, comm;

针对Oracle 9i及后续版本,可以使用ORDER BY子句的扩展语法NULLS FIRST和NULLS LAST来决定NULL值位置,无需考虑非NULL值的排序方式

select ename, sal, comm
    from emp
order by comm nulls first --nulls last;
根据条件逻辑动态调整排序项

例如,如果JOB等于SALESMAN,就按照COMM来排序;否则,按照SAL排序。

select ename, sal, job, comm
    from emp
order by case when job = "SALESMAN" then comm else sal end;
《SQL经典实例》第二章

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/32316.html

相关文章

  • SQL经典实例(附录)窗口函数

    摘要:窗口函数针对指定的行集合分组执行聚合运算。聚合运算的对象其实是一组行记录,我们称之为窗口因此才有了术语窗口函数。关键字表明函数会作为窗口函数来调用,而不是一次普通的聚合函数调用。该示例表明和这一类子句执行完之后,才轮到窗口函数执行。 窗口函数针对指定的行集合(分组)执行聚合运算。不同之处在于,窗口函数能够为每个分组返回多个值,而聚合函数只能返回单一值。聚合运算的对象其实是一组行记录,我...

    LittleLiByte 评论0 收藏0
  • MySQL Optimization 优化原理

    摘要:有非常多的原因会导致选择错误的执行计划,比如统计信息不准确不会考虑不受其控制的操作成本用户自定义函数存储过程认为的最优跟我们想的不一样我们希望执行时间尽可能短,但值选择它认为成本小的,但成本小并不意味着执行时间短等等。 MySQL Optimization 优化原理 MySQL逻辑架构 如果能在头脑中构建一幅MySQL各组件之间如何协同工作的架构图,有助于深入理解MySQL服务器。下图...

    Terry_Tai 评论0 收藏0
  • 我必须得告诉大家的MySQL优化原理

    摘要:有非常多的原因会导致选择错误的执行计划,比如统计信息不准确不会考虑不受其控制的操作成本用户自定义函数存储过程认为的最优跟我们想的不一样我们希望执行时间尽可能短,但值选择它认为成本小的,但成本小并不意味着执行时间短等等。 说起MySQL的查询优化,相信大家收藏了一堆奇技淫巧:不能使用SELECT *、不使用NULL字段、合理创建索引、为字段选择合适的数据类型..... 你是否真的理解这些...

    luffyZh 评论0 收藏0
  • 如何编写更好的SQL查询:终极指南-第三部分

    摘要:本次我们学习如何编写更好的查询系列的最后一篇文章。哈希表的入口由连接属性和行组成。通过将函数应用于属性,来实现哈希表的访问。一旦构建了哈希表,就会扫描较大的表,并通过查看哈希表来查找较小表中的相关行。 showImg(https://segmentfault.com/img/bVUMW0?w=900&h=500); 本次我们学习《如何编写更好的SQL查询》系列的最后一篇文章。 时间复杂...

    buildupchao 评论0 收藏0
  • SQL Server2012 T-SQL基础教程(一)

    摘要:第二范式继承第一范式的约束,在其基础上增加了必须存在主键进行唯一标识,而且表中的其他列需要依赖主键当存在多个主键的时,不能只依赖主键的一部分,也就是只依赖于其中一个。 T-SQL是标准SQL在SQL Server数据库中的实现。 范式 范式是在表设计时的标准,通常一个表需要遵循以下三个范式;第一范式:数据库中的表的列,必须是原子的,不可以在进行拆分。例如:一个列中存储多个值,一个学生的...

    Tikitoo 评论0 收藏0

发表评论

0条评论

ky0ncheng

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<