oracle group by rollup,decode,grouping,nvl,nvl2,nullif,grouping_id,group_id,grouping sets,RATIO_TO
干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的更多相关文章
- oracle几个函数整理 DECODE() NVL NVL2 NULLIF Coalesce(转)
DECODE() decode()函数简介: 主要作用:将查询结果翻译成其他值(即以其他形式表现出来,以下举例说明): 使用方法: Select decode(columnname,值1,翻译值1,值 ...
- oracle NVL,NVL2,NULLIF,COALESCE
Oracle中函数以前介绍的字符串处理,日期函数,数学函数,以及转换函数等等,还有一类函数是通用函数.主要有:NVL,NVL2,NULLIF,COALESCE,这几个函数用在各个类型上都可以. 下面简 ...
- oracle GROUP BY rollup
1.ROW_NUMBER() OVER函数的基本用法用法 http://www.cnblogs.com/fxgachiever/archive/2010/09/15/1826792.html 2.De ...
- oracle group by rollup实现小计、合计
SQL合计汇总实现数据N+1条显示: 注意group by rollup((ename, job, empno))!!! select decode(grouping(ename) + groupin ...
- Oracle Group by+rollup+cube 的应用
首先我们创建一个示例表: Create table test_group (v_name varchar2(4) ,v_size varchar2(4) ,v_color varchar2(4) ,n ...
- 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使用单 ...
- Oracle中的NVL,NVL2,NULLIF以及COALESCE函数使用
首先注意空(null)值,空值加任何值都是空值,空值乘任何值也都是空值,依此类推. 1.NVL函数 NVL函数的格式如下:NVL(expr1,expr2) 含义是:如果oracle第一个参数为空那么显 ...
- oracle通用函数,nvl,nvl2,NULLIF ,coalesce
Oracle 通用函数 ① NVL 函数--------将空值转换成一个已知的值: 可以使用的数据类型有日期.字符.数字. 函数的一般形式: NVL(commission_pct,0) ...
- oracle函数nvl, nvl2, nullif
nvl函数 语法: NVL(表达式1, 表达式2) select nvl(s.name, '未填写') from student s 如果表达式1的值为空, 则显示第二个值, 否则显示原来的值, nv ...
随机推荐
- phpmyadmin设置id自增(AUTO_INCREMENT)(转)
phpmyadmin设置id自增(AUTO_INCREMENT) 在A_I 前面打勾:如图 AUTO_INCREMENT =A_I 查看效果
- MySql中的事务嵌套
1.Mysql中的事务必须是InnoDB.Berkeley DB引擎,myisam不支持. 2.Mysql是不支持嵌套事务的,开启了一个事务的情况下,再开启一个事务,会隐式的提交上一个事务. 3.My ...
- HTML5 canvas 中的线条样式
线条样式属性 lineCap 设置或返回线条的结束端点样式 butt 默认.向线条的每个末端添加平直的边缘. round 向线条的每个末端添加圆形线帽. ...
- 通过SERVICES的方式往商品列表FINDER加入多个ACTION
类似这样的效果: 首先我们需要在自己的app下的services.xml加入一个service: <!-- b2c商品信息 扩展actions --> <service id=&qu ...
- PHP学习系列(1)——字符串处理函数(4)
16.hebrevc() 函数把希伯来文本从右至左的流转换为左至右的流.它也会把新行 (\n) 转换为 <br />.只有 224 至 251 之间的 ASCII 字符,以及标点符号受到影 ...
- 网页、php脚本的编码问题
对于程序的编码问题,做一次总结,我们清楚,从对象来说,编码可能涉及到三到四个对象 一.首先是请求终端: 这个请求终端有可能是浏览器端,从浏览器端发起网页请求:Ajax请求:也有可能是程序内部的Api调 ...
- php过滤参数特殊字符防注入
分享一例php实现过滤提交的参数数据以防止注入的代码,有需要的朋友参考下. 本节内容: php过滤特符字符,php防注入. in: 后端程序 例子: 代码示例: <?php /** * 安全防范 ...
- TFT LCD控制显示总结(硬件概念、初始化相关配置)(转)
源地址:http://nervfzb.blog.163.com/blog/static/314813992011215105432369/ TFT LCD是嵌入式中比较常用的显示器,S3C2440/S ...
- swift和 oc 混编2-备
在Swift语言出现之前,开发iOS或OS X应用主要使用Objective-C语言,此外还可以使用C和C++语言,但是UI部分只能使用Objective-C语言. 选择语言 Swift语言出现后,苹 ...
- hdu 4856 Tunnels
http://acm.hdu.edu.cn/showproblem.php?pid=4856 这道题就是搜索BFS+状压dp,把所经过的隧道的状态用二进制表示,然后dp就行.bfs求出每两个隧道的最短 ...