干oracle 047文章12当问题,经验group by 声明。因此邂逅group by  rollup,decode,grouping,nvl,nvl2,nullif,RATIO_TO_REPORT等一下。

1. decode  与if...then,case...when...这类流数据语句功能差点儿相同

decode(条件,值1,返回值1,值2,返回值2,...值n,返回值n,缺省值)

该函数的含义例如以下:

IF 条件=值1 THEN

    RETURN(值1)

ELSIF 条件=值2 THEN

    RETURN(值2)

    ......

ELSIF 条件=值n THEN

    RETURN(值n)

ELSE

    RETURN(缺省值)

END IF

decode(字段或字段的运算,值1。值2,值3)

这个函数执行的结果是。当字段或字段的运算的值等于值1时,该函数返回值2,否则返回值3

当然值1。值2,值3也能够是表达式

----比較大小

select decode(sign(变量1-变量2),-1,变量1,变量2) from dual; --取较小值

sign()函数依据某个值是0、正数还是负数,分别返回0、1、-1

---依据固定值进行排序 order by

select * from table_subject order by decode(subject_name, '语文', 1, '数学', 2, , '外语',3) ;

2. group by rollup ,grouping,grouping_id,group_id,grouping set,GROUP BY CUBE聚合函数,还可參考OVER (PARTITION BY),这个是可返回多行的聚合函数,比較深一点,链接:http://blog.csdn.net/fengeh/article/details/24934437

rollup:为每一个分组返回一个小计,同一时候为全部分组返回总计;

比如:group by rollup(A,B)

grouping 接收列作为參数,假设列为空,则grouping返回1,否则返回0。该函数与rollup搭配使用。

比如:SQL> SELECT DECODE(GROUPING(EMP_ID), 1, '全部员工', EMP_ID) EMP_ID,

nvl2(emp_id,DECODE(GROUPING(MONTH), 1, '员工年度', MONTH),'全部员工年度') ND,

 SUM(AMOUNT)  FROM ALL_SALES  GROUP BY ROLLUP(EMP_ID, MONTH);

GROUPING_ID()函数能够接受一列或多列,返回GROUPING位向量的十进制值。GROUPING位向量的计算方法是将依照顺序对每一列调用GROUPING函数的结果组合起来,GOURPING位向量计算,功能与grouping差点儿相同,格式为GROUPING_ID(字段A,字段B,字段C...)

例如以下例所看到的

grade         id          位向量      GROUPING_ID()返回值

非空                     非空              00             0

非空                     空                 01             1

空                        非空              10             2

空                        空                 11             3

GROUP_ID() 唯一标识反复组,功能与grouping差点儿相同,只是此字段是依据是否有反复数据来推断的,反复数据就判为1,不反复则为0.

grouping sets 类似于union all,不去重。用于group by后面,比如:

 group by grouping sets((STOCK_ID), (STOCK_ID, TYPE_CD, DISCOUNT)));

整合全部可能性,比如:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZmVuZ2Vo/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast">

3.nvl nvl2 nullif 都是NULL字段的处理方法

NULL指的是空值。或者非法值。

NVL (expr1, expr2)->expr1为NULL。返回expr2;不为NULL,返回expr1。注意两者的类型要一致

NVL2 (expr1, expr2, expr3) ->expr1不为NULL,返回expr2;为NULL,返回expr3。expr2和expr3类型不同的话,expr3会转换为expr2的类型

NULLIF (expr1, expr2) ->相等返回NULL,不等返回expr1

4.RATIO_TO_REPORT解析函数,经经常使用于百分比求数

ratio_to_report(字段) OVER (PARTITION BY customer_id)    ------PARTITION BY等于group by

版权声明:本文博主原创文章,博客,未经同意不得转载。

oracle group by rollup,decode,grouping,nvl,nvl2,nullif,grouping_id,group_id,grouping sets,RATIO_TO的更多相关文章

  1. oracle几个函数整理 DECODE() NVL NVL2 NULLIF Coalesce(转)

    DECODE() decode()函数简介: 主要作用:将查询结果翻译成其他值(即以其他形式表现出来,以下举例说明): 使用方法: Select decode(columnname,值1,翻译值1,值 ...

  2. oracle NVL,NVL2,NULLIF,COALESCE

    Oracle中函数以前介绍的字符串处理,日期函数,数学函数,以及转换函数等等,还有一类函数是通用函数.主要有:NVL,NVL2,NULLIF,COALESCE,这几个函数用在各个类型上都可以. 下面简 ...

  3. oracle GROUP BY rollup

    1.ROW_NUMBER() OVER函数的基本用法用法 http://www.cnblogs.com/fxgachiever/archive/2010/09/15/1826792.html 2.De ...

  4. oracle group by rollup实现小计、合计

    SQL合计汇总实现数据N+1条显示: 注意group by rollup((ename, job, empno))!!! select decode(grouping(ename) + groupin ...

  5. Oracle Group by+rollup+cube 的应用

    首先我们创建一个示例表: Create table test_group (v_name varchar2(4) ,v_size varchar2(4) ,v_color varchar2(4) ,n ...

  6. SQL Fundamentals || Single-Row Functions || 通用函数 General function || (NVL,NVL2,NULLIF,DECODE,CASE,COALESCE)

    SQL Fundamentals || Oracle SQL语言 SQL Fundamentals: Using Single-Row Functions to Customize Output使用单 ...

  7. Oracle中的NVL,NVL2,NULLIF以及COALESCE函数使用

    首先注意空(null)值,空值加任何值都是空值,空值乘任何值也都是空值,依此类推. 1.NVL函数 NVL函数的格式如下:NVL(expr1,expr2) 含义是:如果oracle第一个参数为空那么显 ...

  8. oracle通用函数,nvl,nvl2,NULLIF ,coalesce

    Oracle 通用函数 ① NVL 函数--------将空值转换成一个已知的值: 可以使用的数据类型有日期.字符.数字. 函数的一般形式:   NVL(commission_pct,0)       ...

  9. oracle函数nvl, nvl2, nullif

    nvl函数 语法: NVL(表达式1, 表达式2) select nvl(s.name, '未填写') from student s 如果表达式1的值为空, 则显示第二个值, 否则显示原来的值, nv ...

随机推荐

  1. 一个打砖块的小游戏1.0 KILL THE BLOCKS !

    /******************************************** * 程序名称:MR.DUAN 的打砖块(KILL THE BLOCKS !) * 作 者:WindAutum ...

  2. Oracle 优化——位图、函数等索引介绍

    一.位图索引 我将使用一个例子,来描述位图索引的存储,并分析它的优点. Table :Loans 放贷信息 ID userId 行业投向 币种 证件类型 还本付息方式 状态 1 1 农业 人民币 身份 ...

  3. mysql数据表如何导入MSSQL中

    本案例演示所用系统是windows server 2012.其它版本windows操作系统类似. 1,首先需要下载mysql odbc安装包. http://dev.mysql.com/downloa ...

  4. Skin++ 皮肤库 CCheckListBox MFC 界面风格

    今天使用CCheckListBox,发现增加进去的字符串无法显示,但是当点击的时候,确有反应. 仔细检查代码,没有问题.之前也是这样用的,完全没有问题. 思前想后,觉得是因为使用了Skin++皮肤库, ...

  5. Integer和int的详细比较(转)

    Integer与int的区别我们耳熟详的有两点:1.Integer是int的包装类.2.Integer的默认初始值是null,而int的默认初试值是0. 下面通过代码进行详细比较. public cl ...

  6. mysql 5.5 升级到 mysql 5.6

    目前MySQL数据库软件升级到5..26版本,主要有两种方法.一种是停机升级,即在现有环境下先停止数据库,然后升级数据库软件版本和数据库版本:另外一种是采用不停机的主从升级(master--slave ...

  7. xdebug使用说明

    常用配置 xdebug.var_display_max_children整数类型,默认值128.用于控制通过xdebug_var_dump(),var_dump()方法时显示数组中子数组的个数或对象中 ...

  8. javascript的navigator对象

    navigator 对象 转载: http://www.itlearner.com/code/js_ref/brow1.htm 包含了正在使用的 Navigator 的版本信息. 客户端对象   实现 ...

  9. 在ubuntu14.14 安装php扩展扩展出现的问题

    我是在ubuntu14.14 安装的 lnmp. 部分扩展.均已安装好,但是我用apt-get 方式安装 redis和curl扩展时,我的配置都设置但是从phpinfo里面看没有响应的配置项. 于是我 ...

  10. Python3 如何优雅地使用正则表达式(详解三)

    模块级别的函数 使用正则表达式也并非一定要创建模式对象,然后调用它的匹配方法.因为,re 模块同时还提供了一些全局函数,例如 match(),search(),findall(),sub() 等等.这 ...