1.案例:

SELECT GREATEST('36', '55', '34') V_MAX, LEAST('36', '55', '34') V_MIN
FROM DUAL

Oracle比较一列的最大值或者最小值,我们会不假思索地用MAX和MIN函数,但是对于比较一行的最大值或最小值呢?是不是日常用的少,很多人都不知道有ORACLE也有内置函数实现这个功能:COALESCE / GREATEST / LEAST.

1. COALESCE 返回该表达式列表的第一个非空value。

格式: COALESCE(value1, value2, value3, …)

含义: 返回value列表第一个非空的值。

value列表必须是相同类型,也可以是一个表的同一行、不同列的值进行比较。

EXAMPLE: select coalesce (1, null, 2 ) from dual ; — 返回1

select coalesce ( null, 2, 1 ) from dual ; — 返回2

select coalesce (t.empno, t.mgr ) from  scott.emp t ; — 效果类似 NVL( t.empno, t.mgr )

2. GREATEST 返回值列表中最大值

格式: GREATEST(value1, value2, value3, …)

含义: 返回value列表最大的值。

value列表必须是相同类型,也可以是一个表的同一行、不同列的值进行比较。

当value值列表中有一个为NULL,则返回NULL值。

EXAMPLE: select greatest (1, 3, 2 ) from dual ; — 返回3

select greatest ( ‘A’, ‘B’, ‘C’ ) from dual ; — 返回C

select greatest (null, ‘B’, ‘C’ ) from dual ; — 返回null

select greatest (t.empno, t.mgr ) from  scott.emp t ; — 返回empno和mgr 较大值

3. LEAST 返回值列表中最小值

格式: LEAST(value1, value2, value3, …)

含义: 返回value列表最小的值。

value列表必须是相同类型,也可以是一个表的同一行、不同列的值进行比较。

当value值列表中有一个为NULL,则返回NULL值。

EXAMPLE: select least (1, 3, 2 ) from dual ; — 返回1

select least ( ‘A’, ‘B’, ‘C’ ) from dual ; — 返回A

select least (null, ‘B’, ‘C’ ) from dual ; — 返回null

select least (t.empno, t.mgr ) from  scott.emp t ; — 返回empno和mgr 较小值

oracle 数据库对于多列求最大值的更多相关文章

  1. oracle对三个列求sum

    oracle数据库对test_table表的三个列count1,count2,count3求sum的两种sql,做个记录 第一种 select sum (case when count1 is not ...

  2. 面试题:oracle数据库行转列的问题

    今天我一个学弟问了一个面试题: 有表A,结构如下:A: p_ID p_Num s_id1 10 011 12 022 8 013 11 013 8 03其中:p_ID为产品ID,p_Num为产品库存量 ...

  3. Oracle数据库查询表信息/列信息(列ID/列名/数据类型/长度/精度/是否可以为null/默认值/是否自增/是否是主键/列描述)

    查询表信息(表名/表描述) Select table_Name As Name,Comments As Value From User_Tab_Comments Where table_Type='T ...

  4. Oracle学习总结(4)——MySql、SqlServer、Oracle数据库行转列大全

    MySql行转列 以id分组,把name字段的值打印在一行,逗号分隔(默认) select CustomerDrugCode,group_concat(AuditItemName) from noau ...

  5. oracle数据库将一列的值拼接成一行,并且各个值之间用逗号隔开

    使用场景:把某一列值转换为逗号分隔的字符串 例子:比如查询所有的的表空间如下,现在要获得所有的表空间用逗号分隔的字符串(比如rman duplicate的时候skip表空间) SQL> sele ...

  6. Oracle数据库自动增长列的实现过程

    1.创建序列 -- Create sequence create sequence INNERID minvalue 1 maxvalue 99999999999999 start with 1 in ...

  7. Oracle数据库 —— DML完结

    时间:2016-8-18 01:17 ----------------------------------------------------------------------------停下休息的 ...

  8. Oracle数据库常见sql

    -新建表:create table table_name( id varchar2(300) primary key, name varchar2(200) not null); --插入数据 ins ...

  9. 查看ORACLE 数据库及表信息

    -- 查看ORACLE 数据库中本用户下的所有表 SELECT table_name FROM user_tables; -- 查看ORACLE 数据库中所有用户下的所有表 select user,t ...

随机推荐

  1. 在云端服务器centos7安装jvm并且运行java程序

    (1)在云端服务器 下载jdk http://www.linuxidc.com/Linux/2016-09/134941.htm(大致看这个文章后可以下载一个jdk的压缩包,然后将压缩包解压) 然后, ...

  2. Math类操作数据

    Math 类位于 java.lang 包中,包含用于执行基本数学运算的方法, Math 类的所有方法都是静态方法,所以使用该类中的方法时,可以直接使用类名.方法名,如: Math.round(); 常 ...

  3. dhtmlxtree 节点 展开收缩:新增了直接点 文本内容 也 实现了 展开收缩 功能(并记住了展开、收缩状态)

    dhtmlxtree 节点 展开收缩通常情况我们按 +- 就实现了 展开收缩 功能,为了方便我们新增了直接点 文本内容 也 实现了 展开收缩 功能(并记住了展开.收缩状态) tree = new dh ...

  4. Zookeeper单机伪集群

    Zookeeper单机伪集群 1.配置 zookeeper下载地址:http://apache.mirrors.lucidnetworks.net/zookeeper/ 可以选择需要的版本,我下载的是 ...

  5. Android四大组件应用系列——Activity与Service交互实现APK下载

    Servic与Activity相比它没有界面,主要是在后台执行一些任务,Service有两种启动方法startService()和bindService(),startService方式Service ...

  6. python排序出现的问题以及解决方案

    对某个文件夹中的文件重命名的时候,发现有些文件丢失,代码如下: #coding=gbk # Findthe every dir, if 01.rm exist in it, then rename i ...

  7. easyui-switchbutton js判断是否启动

    <input class="easyui-switchbutton" id="statusId" name="status" onTe ...

  8. 12C新特性--Application Continuity

    Application Continuity特性可以在中断后恢复受影响的数据库会话的任务,从而让终端用户和应用程序感觉不到中断的发生.Application Continuity执行恢复的过程是在应用 ...

  9. QT和MFC的差别

    QT和MFC的差别 在使用MFC之前就已经使用Qt这个事实可能影响了我的客观性. (MFC效率较高,但大量的Windows API和消息机制使得其较难理解,不易用:QT封装较好,易用且跨平台,但效率较 ...

  10. zookeeper的可视化web界面

    转载一篇我心中大神有关zookeeper  WEB的文章 以前写过一篇zookeeper集群搭建的文章<烂泥:zookeeper集群搭建>,最近在使用activemq集群过程中碰到了一些有 ...