干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. (转)jQuery LigerUI 插件介绍及使用之ligerTree

    一,简介  ligerTree的功能列表: 1,支持本地数据和服务器数据(配置data或者url) 2,支持原生html生成Tree 3,支持动态获取增加/修改/删除节点 4,支持大部分常见的事件 5 ...

  2. PHP语言中使用JSON

    原文地址:http://www.ruanyifeng.com/blog/2011/01/json_in_php.html 在PHP语言中使用JSON 目前,JSON已经成为最流行的数据交换格式之一,各 ...

  3. SQL用row_number进行高速循环

    SQL用row_number进行循环查询 declare @count int=0,@R int=0select row_number()over(order by RoomID) as R,* in ...

  4. oracle 数据库开发面试题,当时笔试的时候一个没做出来,现附原题及答案

    1. ID123567810111215 表名tt,用sql找出ID列中不连续的ID,例如其中没有的4: --创建表及数据 CREATE TABLE tt(ID INTEGER); INSERT IN ...

  5. Swift - 40 - 枚举更加灵活的使用方式

    //: Playground - noun: a place where people can play import UIKit /* 这里的枚举没有给它的成员默认值, 而是给它绑定了一个类型, 之 ...

  6. zepto源码研究 - zepto.js - 6(模板方法)

    width  height  模板方法   读写width/height ['width', 'height'].forEach(function(dimension){ //将width,hegih ...

  7. Struts2 UI标签

    表单标签的共同属性(该属性只在没有使用 simple 主题时才可以使用) form 标签  用来呈现 HTML 语言中的表单元素 默认情况下, form 标签将被呈现为一个表格形式的 HTML 表单. ...

  8. 武汉科技大学ACM :1010: 零起点学算法103——一只小蜜蜂...

    Problem Description 有一只经过训练的蜜蜂只能爬向右侧相邻的蜂房,不能反向爬行.请编程计算蜜蜂从蜂房a爬到蜂房b的可能路线数. 其中,蜂房的结构如下所示. Input 输入数据的第一 ...

  9. CHAR数组转成STRING:C++

    有些时候,键入了CHAR数组却不会知道到底有多长,是不是很差评呢?但是,转成STRING就可以啦QWQ #include <iostream> #include <cstdio> ...

  10. Android的消息处理机制(Looper,Handler,Message)(转)

    Handler Handler的定义: 主要接收子线程发送的数据,并用此数据配合主线程更新UI. 当应用程序启动时,Android首先会开启一个主线程(也就是UI线程),主线程为管理界面中的UI空间进 ...