grouping sets,cube,rollup,grouping__id,group by
例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的更多相关文章
- SQL Server ->> GROUPING SETS, CUBE, ROLLUP, GROUPING, GROUPING_ID
在我们制作报表的时候常常需要分组聚合.多组聚合和总合.如果通过另外的T-SQL语句来聚合难免性能太差.如果通过报表工具的聚合功能虽说比使用额外的T-SQL语句性能上要好很多,不过不够干脆,还是需要先生 ...
- 转:GROUPING SETS、ROLLUP、CUBE
转:http://blog.csdn.net/shangboerds/article/details/5193211 大家对GROUP BY应该比较熟悉,如果你感觉自己并不完全理解GROUP BY,那 ...
- GROUPING SETS、ROLLUP、CUBE
大家对GROUP BY应该比较熟悉,如果你感觉自己并不完全理解GROUP BY,那么本文不适合你.还记得当初学习SQL的时候,总是理解不了GROUP BY的作用,经过好长时间才终于明白GROUP BY ...
- SQL Server 之 GROUP BY、GROUPING SETS、ROLLUP、CUBE
1.创建表 Staff CREATE TABLE [dbo].[Staff]( ,) NOT NULL, ) NULL, ) NULL, ) NULL, [Money] [int] NULL, [Cr ...
- Grouping Sets:CUBE和ROLLUP从句
在上一篇文章里我讨论了SQL Server里Grouping Sets的功能.从文中的例子可以看到,通过简单定义需要的分组集是很容易进行各自分组.但如果像从所给的列集里想要有所有可能的分布——即所谓的 ...
- group by <grouping sets(...) ><cube(...)>
GROUP BY GROUPING SETS() 后面将还会写学习 with cube, with rollup,以及将它们转换为标准的GROUP BY的子句GROUP SET(), CU ...
- Group By 多个分组集小结 --GROUPING SETS,GROUP BY CUBE,GROUP BY ROLLUP,GROUPING(),GROUPING_ID()
T-SQL 多个分组集共有三种 GROUPING SETS, CUBE, 以及ROLLUP, 其中 CUBE和ROLLUP可以当做是GROUPING SETS的简写版 示例数据库下载: http:// ...
- 使用group by rollup和group by cube后的辅助函数
本文主要介绍,报表在使用group by rollup和group by cube后的辅助函数. CREATE TABLE TEST8 ( "ID" NUMBER, "O ...
- Group By Grouping Sets
Group by分组函数的自定义,与group by配合使用可更加灵活的对结果集进行分组,Grouping sets会对各个层级进行汇总,然后将各个层级的汇总值union all在一起,但却比单纯的g ...
随机推荐
- BZOJ 3202 项链
题目连接:http://www.lydsy.com:808/JudgeOnline/problem.php?id=3202 题意:一个项链由n个珠子组成.每个珠子有三个面,每个面上有一个数字,要求每个 ...
- js表单操作
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- V-rep学习笔记:机器人逆运动学数值解法(Cyclic Coordinate Descent Method)
When performing inverse kinematics (IK) on a complicated bone chain, it can become too complex for a ...
- 不小心删除数据--利用MySQL的binlog恢复数据
MySQL Binary Log也就是常说的bin-log, ,是mysql执行改动产生的二进制日志文件,其主要作用有两个: * 数据回复 * 主从数据库.用于slave端执行增删改,保持与maste ...
- [UVa1213]Sum of Different Primes(递推,01背包)
题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem ...
- RNAseq分析软件STAR的安装
wget https://github.com/alexdobin/STAR/releases/STAR-2.5.2a.tar.gz tar -xzf STAR-2.5.2a.tar.gz cd ST ...
- linux终端vi同时显示多个文件的分屏操作及切换操作
以前看到那边分屏操作的觉得很高端,现在初步整理了一下. 这里不是那个用代码实现的分屏,完全属于linux的操作命令 一.打开并显示文件 1.打开 这个不用说了,就是vi xx.c,或者vi xx1.c ...
- JAVA中对Cookie的操作
(1)往 Cookie 中存值: <%@page import="javax.xml.ws.Response"%> <%@ page language=" ...
- QQMain
import java.awt.*; import javax.swing.*; import java.awt.event.*; public class QQMain extends JFrame ...
- Java 多线程 (转)
http://www.ibm.com/developerworks/cn/java/j-thread/index.html http://www.ibm.com/developerworks/cn/j ...