oracle统计sql的使用之grouping_id

原创 2015年07月07日 15:56:34

一、先看sql示例

select u.group_num,u.area_name,--grouping(u.area_name),
sum(decode(u.bm,'联想 (Lenovo)A396',u.count,0)) aount1,
 sum(decode(u.bm,'中兴 (ZTE)V5s',u.count,0)) aount2
 from
(
select t5.group_num,t50.area_name,t1.brand_name || t1.model_name bm,sum(t1.order_amount) count
from activity_group t5
left join td_m_area_bss t50 on t5.area_code = t50.area_code
left join TI_WEG_CHNL_DETAIL t2 on t2.city_code = t50.user_area_code
left join TI_WEG_ORDER_DETAIL t1 on t1.chnl_id = t2.chnl_id and  t1.brand_name || t1.model_name in ('联想 (Lenovo)A396','中兴 (ZTE)V5s')
where t5.activity_id = '138'
group by t5.group_num,t50.area_name,t1.brand_name,t1.model_name
)u
group by rollup(u.group_num,u.area_name)
having grouping_id(u.group_num,u.area_name)!=1
--having not (area_name is null and group_num is not null)
order by u.group_num

注:

1、grouping_id的数字是怎么确定的?
向量值,可以认为是二进值的数,例:grouping_id(a,b,c),如果列a为空就是0 非空为1,列b和列c也一样,
结果会得到一个三位数,用二进制转换成十进制就是了,例:a,b,c全是非空,说明这行数据是一个总计,那么就是111即7,三列就是7,如果是两列自然是11就是3了。
2、因为Grouping是用来判断当前Column是否是一个合计列,如果是一个合计列,则相应的列会是一个空值

版权声明:互相学习,欢迎交流! 举报

相关文章推荐

Oracle ROLLUP和CUBE、grouping_id() 用法

Oracle的GROUP BY语句除了最基本的语法外,还支持ROLLUP和CUBE语句。如果是ROLLUP(A, B, C)的话,首先会对(A、B、C)进行GROUP BY,然后对(A、B)进行GRO...

Oracle学习笔记--grouping/grouping_id

标签: grouping  grouping_id  分类: Oracle 2010-08-15 10:12 Grouping函数: 可以接受一列,返回0或1。如果列值为空,则返...

我是如何成为一名python大咖的?

人生苦短,都说必须python,那么我分享下我是如何从小白成为Python资深开发者的吧。2014年我大学刚毕业..

ORACLE GROUPING_ID函数

可以使用GROUPING_ID函数借助HAVING子句对记录进行过滤,将不包含小计或者总计的记录除去。GROUPING_ID()函数可以接受一列或多列,返回GROUPING位向量的十进制值。GROUP...

Oracle很实用的汇总报表实现方式!grouping_id、rollup的使用

在财务系统或者其他报表统计的功能里我想类似下面这张报表的case很多,有了grouping_id函数之后会轻松easy实现,不菲催费之力 序号     项     目 上年 ...

Oracle分组小计、总计示例(grouping sets的使用)

1.首先创建一个表 Sql代码 create table TE ( ID VARCHAR2(2), T_CODE VARCHAR2(4), T_...

Oracle统计函数使用之ROLLUP,CUBE,GROUPING,GROUPING SETS,GROUPING_ID

Oracle统计函数使用之ROLLUP与CUBE     Oracle的GROUP BY语句除了最基本的语法外,还支持ROLLUP和CUBE语句。如果是ROLLUP(A, B, C)的话,首先会对(...

ORACLE GROUPING_ID函数

可以使用GROUPING_ID函数借助HAVING子句对记录进行过滤,将不包含小计 或者总计的记录除去。GROUPING_ID()函数可以接受一列或多列,返回GROUPING 位向量的十进制值。G...

oracle分组汇总统计函数grouping

前两天同事问一个oracle使用grouping完成一个统计报表的功能,这个函数帅呆了。开发分组报表直接一个SQL就搞定。 grouping(columnA)函数的意思:当前行如果是由rollup汇总...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)