关闭

oracle统计sql的使用之grouping_id

728人阅读 评论(0) 收藏 举报
分类:

一、先看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是否是一个合计列,如果是一个合计列,则相应的列会是一个空值

0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

Oracle中grouping和grouping_id使用

1、grouping使用 使用grouping可以判断该行是数据库中本来的行,还是有统计产生的行 SQL> select grouping(grade),grade,sum(num) from a g...
  • dengqi18814470962
  • dengqi18814470962
  • 2016-09-30 17:24
  • 2815

hive GROUPING SETS通过GROUPING__ID 得到聚合的字段

Grouping_ID函数 当我们没有统计某一列时,它的值显示为null,这可能与列本身就有null值冲突,这就需要一种方法区分是没有统计还是值本来就是null。(写一个排列组合的算法,就马上理解了...
  • wen_2
  • wen_2
  • 2017-03-23 18:19
  • 921

ORACLE GROUPING_ID函数

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

grouping or grouping_id in ORACLE

  • 2013-04-03 14:35
  • 5KB
  • 下载

Oracle学习笔记--grouping/grouping_id

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

oracle分组汇总统计函数grouping

前两天同事问一个oracle使用grouping完成一个统计报表的功能,这个函数帅呆了。开发分组报表直接一个SQL就搞定。 grouping(columnA)函数的意思:当前行如果是由rollup汇总...
  • damenggege123
  • damenggege123
  • 2014-08-24 10:49
  • 22347

Oracle中SQL语句学习五(统计分组语句group by和having)

在应用系统开发中,进行需要统计数据库中的数据,当执行数据统计时,需要将表中的数据进行分组显示,在统计分组中是通过group by子句、分组函数、having子句共同实现的。其中group by子句用于...
  • icanlove
  • icanlove
  • 2014-08-26 16:23
  • 14456

oracle分组汇总统计函数grouping

前两天同事问一个oracle使用grouping完成一个统计报表的功能,这个函数帅呆了。开发分组报表直接一个SQL就搞定。 grouping(columnA)函数的意思:当前行如果是由rollup汇总...
  • damenggege123
  • damenggege123
  • 2014-08-24 10:49
  • 22347

【SQL】分组数据,过滤分组-group by , having

创建分组 - GROUP BY
  • robinjwong
  • robinjwong
  • 2014-05-01 23:13
  • 15215

ORACLE GROUPING_ID函数

可以使用GROUPING_ID函数借助HAVING子句对记录进行过滤,将不包含小计 或者总计的记录除去。GROUPING_ID()函数可以接受一列或多列,返回GROUPING 位向量的十进制值。G...
  • luguohai123
  • luguohai123
  • 2012-05-16 22:29
  • 235
    个人资料
    • 访问:157680次
    • 积分:2502
    • 等级:
    • 排名:第16999名
    • 原创:79篇
    • 转载:106篇
    • 译文:1篇
    • 评论:9条
    最新评论