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 重置root 密码

    重置Centos 7 Root密码的方式和Centos 6完全不同.让我来展示一下到底如何操作. 1 - 在启动grub菜单,选择编辑选项启动 2 - 按键盘e键,来进入编辑界面 3 - 找到Linu ...

  2. window7 更改电脑黑屏时间

    无废话--------------------Window7 更改电脑黑屏时间,步骤如下: 1.进入‘控制面板’,通过开始页面或通过计算机我的电脑中的打开‘控制面板’都可以打开. 2.系统与安全类别下 ...

  3. unity操作Hierarchy视图下同名的对象

    上周遇到了一个令我尴尬的问题,在同一个场景内有了两个名字相同的对象,给个形象化的栗子: 场景内有橱窗,橱窗是模型,窗户是可以打开的[点击控制],窗户可以控制打开和关闭的.然后我就选用了一个保守的方式进 ...

  4. Oozie分布式工作流——EL表达式

    oozie支持使用EL(expression language)表达式. 基本的EL常量 KB MB GB TB PB 基本EL函数 string firstNotNull(String value1 ...

  5. scrollView 刷新显示在中间的问题

    scrollView问题 打开activity之后 屏幕初始位置不是顶部 而是在中间 也就是scroll滚动条不在上面 而是在中间 楼主你好,我大概是和你遇见了同样的问题,你可以灵活处理一下,不要去管 ...

  6. 矩阵乘法code

    VOJ1067 我们可以用上面的方法二分求出任何一个线性递推式的第n项,其对应矩阵的构造方法为:在右上角的(n-1)*(n-1)的小矩阵中的主对角线上填1,矩阵第n行填对应的系数,其它地方都填0.例如 ...

  7. Android真机测试、乐视手机启用开发者模式

    一.乐视手机启用开发者模式 1.进入 设置>关于手机,连续按5次,进入开发者模式 显示结果如下: 2.启用开发者模式,并且要启用USB调试 3.在VS中部署或调试Android引用,使用真机测试 ...

  8. WHY数学表达式的3D可视化

    WHY数学表达式的3D可视化 很早之前我就有这种想法,将数学表达式的图形显示出来.最近终于实现了这套较为完善的版本,将其代码公布,也为开源做点贡献.首先系统中定义一套脚本语言格式,用于描述数学表达式. ...

  9. 马斯克:有62%的程序员认为人工智能会被武器化 #精选AR人工智能算法

    当地时间 9 月 13 日,马斯克在自己的个人推特账号上转推了一篇名为<Hackers Have Already Started to Weaponize Artificial Intellig ...

  10. Android Gesture Detector

    Android Touch Screen 与传统Click Touch Screen不同,会有一些手势(Gesture),例如Fling,Scroll等等.这些Gesture会使用户体验大大提升.An ...