干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. 在ASP.NET中使用一般处理程序生成验证码

    如果期望一般处理程序(ashx)处理Session,必须实现[System.Web.SessionState]命名空间下的[IRequiresSessionState]接口. asp.net中的验证码 ...

  2. ajax+ashx 完美实现input file上传文件

    1.input file 样式不能满足需求 <input type="file" value="浏览" /> IE8效果图:    Firefox效 ...

  3. oracle存储过程写法。

    create or replace procedure testwzm(v_gdjdm in varchar2) isv_id varchar2(10);v_xlname varchar2(100); ...

  4. Java反射 - 2(对象复制,父类域,内省)

    为什么要复制对象?假设有个类Car,包含name,color2个属性,那么将car1对象复制给car2对象,只需要car2.setName(car1.getName)与car2.setColor(ca ...

  5. css动态样式

    一种 var style=document.createElement("style"); style.type="text/css"; style.appen ...

  6. Ubuntu小私房(4)--Linux系统目录结构

    Linux目录结构是Linux学习者必须了解的知识,Linux的目录与Windows又有很大的不同,所以搞清楚Linux目录结构是关键. Linux文件类型 (部分转自ChinaBytel) linu ...

  7. Oracle数据库之PL/SQL异常处理

    Oracle数据库之PL/SQL异常处理 异常指的是在程序运行过程中发生的异常事件,通常是由硬件问题或者程序设计问题所导致的. PL/SQL程序设计过程中,即使是写得最好的程序也可能会遇到错误或未预料 ...

  8. mysql命令行执行外部文件

    mysql命令行执行外部文件

  9. htmlspecialchars()函数

    htmlspecialchars() 函数把一些预定义的字符转换为 HTML 实体. 预定义的字符是: & (和号) 成为 & " (双引号) 成为 " ' (单引 ...

  10. WCF入门教程[WCF基本应用]

    一.概述 Windows Communication Foundation(WCF)是由微软发展的一组数据通信的应用程序开发接口,可以翻译为Windows通讯接口,它是.NET框架的一部分.由 .NE ...