2.06 根据数据项的键排序

问题:要根据某些条件逻辑来排序。例如,如果JOB是”SALESMAN”,要根据comm来排序。

解决方案:在order by子句中使用case表达式

select ename,sal,job,comm from emp 
    order by case when job = ‘SALESMAN‘ then comm else sal end

讨论:
可以使用 case表达式来动态改变如何对结果排序。传递给order by 的值类似这样:

select  ename,sal,job,comm,
    case when job = ‘SALESMAN‘ then comm else sal end as ordered
        from emp
order by 5

时间: 2024-11-12 15:10:41

2.06 根据数据项的键排序的相关文章

python之itemgetter函数:对字典列表进行多键排序

itemgetter函数:对字典列表进行多键排序 1 from operator import itemgetter 2 3 list_people = [ 4 {'name': 'Mike', 'age': 22, 'score': 90}, 5 {'name': 'Alice', 'age': 22, 'score': 90}, 6 {'name': 'Lee', 'age': 26, 'score': 92}, 7 {'name': 'Ben', 'age': 26, 'score': 8

hadoop复合键排序使用方法

在hadoop中处理复杂业务时,需要用到复合键,复合不同于单纯的继承Writable接口,而是继承了WritableComparable<T>接口,而实际上,WritableComparable<T>接口继承了Writable和Comparable<T>接口,如果只需要使用某一个类作为传值对象而不是作为key,继承Writable接口即可. 上源码: public interface WritableComparable<T> extends Writabl

mysql生成varchar类型主键排序

用uuid生成20位的主键 SELECT LEFT(REPLACE(UUID(), '-', ''),20) FROM DUAL 另一种方法: 因为数据库中有字母 需要排序的时候去除字母,重新取最大值,然后加1算作新的主键 SELECT IFNULL(DEPT_ID,0)+1 FROM base_dept ORDER BY DEPT_ID+0 DESC LIMIT 0,1 或者 使用MySQL函数CAST/CONVERT: mysql为我们提供了两个类型转换函数:CAST和CONVERT,现成的

php 二维数组按照某个键排序

$date = array_column($arr, 'run_date'); //上面得到的结果:array(0=>'2017-11-21',1=>'2017-11-20',3=>'2017-11-22') //再用array_multisort 结合array_column得到的结果对$arr进行排序 array_multisort($date,SORT_ASC,$arr); 原文地址:https://www.cnblogs.com/weiyiyong/p/9910516.html

SQLCookbook 学习笔记 结果排序

select name from emp order by salary; ORDER BY 默认是按照升序排列, 当需要倒序时 用 ORDRE BY salary DESC ORDER BY  不一定要基于列名 ,也可以用数字表示 基于第几列: select name from emp order by 3;         salary是从左到右第三列. 按照多个字段排序 select * from emp order by depno, salary desc; 按照部门升序,在部门内部按

排序(二)键索引、桶排序、位示图、败者树等

排序(二) 以上排序算法都有一个性质:在排序的最终结果中,各元素的次序依赖于它们之间的比较.我们把这类排序算法称为比较排序. 任何比较排序的时间复杂度的下界是nlgn. 以下排序算法是用运算而不是比较来确定排序顺序的.因此下界nlgn对它们是不适用的. 键索引计数法(计数排序) 计数排序假设n个输入元素中的每一个都是在0到k区间的一个整数,其中k为某个整数. 思想:对每一个输入元素x,确定小于x的元素个数.利用这一信息,就可以直接把x放到它在输出数组中的位置了. 例如: 学生被分为若干组,标号为

MySQL排序原理与MySQL5.6案例分析【转】

本文来自:http://www.cnblogs.com/cchust/p/5304594.html,其中对于自己觉得是重点的加了标记,方便自己理解. 前言      排序是数据库中的一个基本功能,MySQL也不例外.用户通过Order by语句即能达到将指定的结果集排序的目的,其实不仅仅是Order by语句,Group by语句,Distinct语句都会隐含使用排序.本文首先会简单介绍SQL如何利用索引避免排序代价,然后会介绍MySQL实现排序的内部原理,并介绍与排序相关的参数,最后会给出几个

转:各种排序算法的稳定性和时间复杂度小结

选择排序.快速排序.希尔排序.堆排序不是稳定的排序算法, 冒泡排序.插入排序.归并排序和基数排序是稳定的排序算法. 冒泡法:  这是最原始,也是众所周知的最慢的算法了.他的名字的由来因为它的工作看来象是冒泡:  复杂度为O(n*n).当数据为正序,将不会有交换.复杂度为O(0). 直接插入排序:O(n*n) 选择排序:O(n*n) 快速排序:平均时间复杂度log2(n)*n,所有内部排序方法中最高好的,大多数情况下总是最好的. 归并排序:log2(n)*n 堆排序:log2(n)*n 希尔排序:

MySQL排序原理与案例分析

前言      排序是数据库中的一个基本功能,MySQL也不例外.用户通过Order by语句即能达到将指定的结果集排序的目的,其实不仅仅是Order by语句,Group by语句,Distinct语句都会隐含使用排序.本文首先会简单介绍SQL如何利用索引避免排序代价,然后会介绍MySQL实现排序的内部原理,并介绍与排序相关的参数,最后会给出几个“奇怪”排序例子,来谈谈排序一致性问题,并说明产生现象的本质原因. 1.排序优化与索引使用      为了优化SQL语句的排序性能,最好的情况是避免排