例1:

hive -e"

select

type

,status

,count(1)

from

usr_info

where pt='2015-09-14'

group by type,status

grouping sets ((type,status),( type),());

">one.txt

Grouping sets按照各种指定聚类汇总方式,如group by type,status grouping sets ((type,status),( type),())

表示group by type,status union all  group by type union all group by ()

得到

type status       _c2

NULL         NULL         69467

1       NULL         68216

1       1       63615

1       2       540

1       4       4061

2       NULL         891

2       1       873

2       2       18

3       NULL         360

3       1       340

3       4       20

例2:

hive -e"

select

type

,status

,count(1)

from

usr_info

where pt='2015-09-14'

group by type,status with rollup;

">two.txt

group by type,status with rollup按照以type为主的固定聚类汇总方式,如同group by type,status grouping sets ((type,status),( type),()) ,不过形式已经固定了,表示group by type,status union all  group by type union all group by ()

得到

Type status      _c2

NULL         NULL         69467

1       NULL         68216

1       1       63615

1       2       540

1       4       4061

2       NULL         891

2       1       873

2       2       18

3       NULL         360

3       1       340

3       4       20

例3:

hive -e"

select

type

,status

,count(1)

from

usr_info

where pt='2015-09-14'

group by type,status with cube;

">three.txt

group by type,status with cube按照以type和status为主的固定聚类汇总方式,如同group by type,status grouping sets ((type,status),( type),(status),()) ,不过形式已经固定了,表示group by type,status union all group by type union all group by status union all group by ()

得到

Type status      _c2

NULL         NULL         69467

NULL         1       64828

NULL         2       558

NULL         4       4081

1       NULL         68216

1       1       63615

1       2       540

1       4       4061

2       NULL         891

2       1       873

2       2       18

3       NULL         360

3       1       340

3       4       20

例4:

hive -e"

select

type

,status

,grouping__id

,count(1)

from

usr_info

where pt='2015-09-14'

group by type,status with cube;

">five.txt

type

,status

,grouping__id

grouping__id(两条横线)函数判断其参数是否参与了分组,如果参与则返回1,如果没有参与了分组则返回0

而其多个参数的形式则将其每个参数进行grouping__id运算后返回的值拼成二进制后转换为十进制返回,

grouping_id(argn,...,arg2,arg1)=grouping_id(argn)*2^(n-1)+...+grouping_id(arg2)*2^1+grouping_id(arg1)*2^0('^'表示幂运算)。

Hive中grouping__id不带参数,用法见例子。

得到

type status    grouping__id   _c3

NULL         NULL         0       69467

NULL         1       2       64828

NULL         2       2       558

NULL         4       2       4081

1       NULL         1       68216

1       1       3       63615

1       2       3       540

1       4       3       4061

2       NULL         1       891

2       1       3       873

2       2       3       18

3       NULL         1       360

3       1       3       340

3       4       3       20

grouping sets,cube,rollup,grouping__id,group by的更多相关文章

  1. SQL Server ->> GROUPING SETS, CUBE, ROLLUP, GROUPING, GROUPING_ID

    在我们制作报表的时候常常需要分组聚合.多组聚合和总合.如果通过另外的T-SQL语句来聚合难免性能太差.如果通过报表工具的聚合功能虽说比使用额外的T-SQL语句性能上要好很多,不过不够干脆,还是需要先生 ...

  2. 转:GROUPING SETS、ROLLUP、CUBE

    转:http://blog.csdn.net/shangboerds/article/details/5193211 大家对GROUP BY应该比较熟悉,如果你感觉自己并不完全理解GROUP BY,那 ...

  3. GROUPING SETS、ROLLUP、CUBE

    大家对GROUP BY应该比较熟悉,如果你感觉自己并不完全理解GROUP BY,那么本文不适合你.还记得当初学习SQL的时候,总是理解不了GROUP BY的作用,经过好长时间才终于明白GROUP BY ...

  4. SQL Server 之 GROUP BY、GROUPING SETS、ROLLUP、CUBE

    1.创建表 Staff CREATE TABLE [dbo].[Staff]( ,) NOT NULL, ) NULL, ) NULL, ) NULL, [Money] [int] NULL, [Cr ...

  5. Grouping Sets:CUBE和ROLLUP从句

    在上一篇文章里我讨论了SQL Server里Grouping Sets的功能.从文中的例子可以看到,通过简单定义需要的分组集是很容易进行各自分组.但如果像从所给的列集里想要有所有可能的分布——即所谓的 ...

  6. group by <grouping sets(...) ><cube(...)>

    GROUP BY      GROUPING SETS() 后面将还会写学习 with cube,  with rollup,以及将它们转换为标准的GROUP BY的子句GROUP SET(), CU ...

  7. Group By 多个分组集小结 --GROUPING SETS,GROUP BY CUBE,GROUP BY ROLLUP,GROUPING(),GROUPING_ID()

    T-SQL 多个分组集共有三种 GROUPING SETS, CUBE, 以及ROLLUP, 其中 CUBE和ROLLUP可以当做是GROUPING SETS的简写版 示例数据库下载: http:// ...

  8. 使用group by rollup和group by cube后的辅助函数

    本文主要介绍,报表在使用group by rollup和group by cube后的辅助函数. CREATE TABLE TEST8 ( "ID" NUMBER, "O ...

  9. Group By Grouping Sets

    Group by分组函数的自定义,与group by配合使用可更加灵活的对结果集进行分组,Grouping sets会对各个层级进行汇总,然后将各个层级的汇总值union all在一起,但却比单纯的g ...

随机推荐

  1. 传递给系统调用的数据区域太小。 (异常来自 HRESULT:0x8007007A)

    在做结构体向字节数组转换的时候,常遇到"传递给系统调用的数据区域太小"的错误,究其原因是因为英文与汉字的编码方式不同,一个汉字等于两个字节,而一个英文字母等于1个字节.所以,对于如 ...

  2. static变量在php和java中的生命周期

    1. java的static变量伴随着java虚拟机的退出而消亡,java虚拟机运行期间,static变量一直存在 2. php的static变量只针对一次请求(一次php文件的执行),php文件执行 ...

  3. SAP BASIS日常需要做的工作

    SAP Basis的一些日常工作包括用户权限管理.集团管理.数据库管理.后台作业.打印管理.系统监控.传输管理等. a. 用户权限管理: SU01—创建,修改,显示用户信息 SU10—批量修改用户 P ...

  4. 权威发布:长链非编码RNA命名规则

    转自:http://blog.sina.com.cn/s/blog_8088f3700101pab7.html 权威发布:长链非编码RNA命名规则 对于人类基因命名标准的制定而言,雨果基因命名委员会( ...

  5. Codeforces Round #260 (Div. 2)AB

    http://codeforces.com/contest/456/problem/A A. Laptops time limit per test 1 second memory limit per ...

  6. HDU 5422 Rikka with Graph

    Rikka with Graph Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) ...

  7. Android中向SD卡读写数据,读SD卡和手机内存

    package com.example.sdoperation; import java.io.BufferedReader; import java.io.File; import java.io. ...

  8. MongoDB 中遇到的一些错误

    1.在win平台上,使用ctrl+c关闭mongodb后,使用 mongod --dbpath=D:\mongodb\db --logpath=D:\mongodb\log.txt --port -- ...

  9. mac下pmset的使用方法

    在终端输入:pmset -g custom    这个命令可以显示系统所有的电源设置 lidwake: 当屏幕掀开的时候唤醒Mac,1是开启  0是关闭autopoweroff: 如果Mac处于睡眠状 ...

  10. [转载] 每个 Python 程序员都要知道的日志实践

    原文: http://python.jobbole.com/81666/ 在现实生活中,记录日志非常重要.银行转账时会有转账记录:飞机飞行过程中,会有黑盒子(飞行数据记录器)记录飞行过程中的一切.如果 ...