1. -- GROUPING SETS作为GROUP BY的子句,允许开发人员在GROUP BY语句后面指定多个统计选项,可以简单理解为多条group by语句通过union all把查询结果聚合起来结合起来。
  2. select
  3. device_id
  4. ,os_id
  5. ,app_id
  6. ,count(user_id)
  7. from test_xinyan_reg
  8. group by device_id,os_id,app_id
  9. grouping sets((device_id),(os_id),(device_id,os_id),())
  10. -- 等价于
  11. SELECT device_id,null,null,count(user_id) FROM test_xinyan_reg group by device_id UNION ALL
  12. SELECT null,os_id,null,count(user_id) FROM test_xinyan_reg group by os_id UNION ALL
  13. SELECT device_id,os_id,null,count(user_id) FROM test_xinyan_reg group by device_id,os_id UNION ALL
  14. SELECT null,null,null,count(user_id) FROM test_xinyan_reg
  15. ;
  16.  
  17. -- cube简称数据魔方,可以实现hive多个任意维度的查询,cube(a,b,c)则首先会对(a,b,c)进行group by,然后依次是(a,b),(a,c),(a),(b,c),(b),©,最后在对全表进行group by,他会统计所选列中值的所有组合的聚合
  18. -- cube即为grouping sets的简化过程函数
  19. select device_id,os_id,app_id,client_version,from_id,count(user_id)
  20. from test_xinyan_reg
  21. group by device_id,os_id,app_id,client_version,from_id with cube;
  22.  
  23. -- rollup可以实现从右到做递减多级的统计,显示统计某一层次结构的聚合。
  24. select device_id,os_id,app_id,client_version,from_id,count(user_id)
  25. from test_xinyan_reg
  26. group by device_id,os_id,app_id,client_version,from_id with rollup;
  1. select
  2. id
  3. ,name
  4. ,count(age)
  5. from (
  6. select 1 as id, 'a' as name,11 as age union all
  7. select 2 as id, 'b' as name,12 as age union all
  8. select 3 as id, 'c' as name,13 as age union all
  9. select 4 as id, 'd' as name,14 as age union all
  10. select 4 as id, 'd' as name,15 as age union all
  11. select 4 as id, 'd' as name,16 as age union all
  12. select 4 as id, 'd' as name,17 as age union all
  13. select 4 as id, 'd' as name,18 as age
  14. ) t1
  15. group by
  16. id
  17. ,name
  18. with cube
  19. ;
  20. +------------+------------+------------+
  21. | id | name | _c2 |
  22. +------------+------------+------------+
  23. | NULL | NULL | 8 |
  24. | NULL | a | 1 |
  25. | NULL | b | 1 |
  26. | NULL | c | 1 |
  27. | NULL | d | 5 |
  28. | 1 | NULL | 1 |
  29. | 1 | a | 1 |
  30. | 2 | NULL | 1 |
  31. | 2 | b | 1 |
  32. | 3 | NULL | 1 |
  33. | 3 | c | 1 |
  34. | 4 | NULL | 5 |
  35. | 4 | d | 5 |
  36. +------------+------------+------------+
  37.  
  38. select
  39. id
  40. ,name
  41. ,count(age)
  42. from (
  43. select 1 as id, 'a' as name,11 as age union all
  44. select 2 as id, 'b' as name,12 as age union all
  45. select 3 as id, 'c' as name,13 as age union all
  46. select 4 as id, 'd' as name,14 as age union all
  47. select 4 as id, 'd' as name,15 as age union all
  48. select 4 as id, 'd' as name,16 as age union all
  49. select 4 as id, 'd' as name,17 as age union all
  50. select 4 as id, 'd' as name,18 as age
  51. ) t1
  52. group by
  53. id
  54. ,name
  55. with rollup
  56. ;
  57. +------------+------------+------------+
  58. | id | name | _c2 |
  59. +------------+------------+------------+
  60. | NULL | NULL | 8 |
  61. | 1 | NULL | 1 |
  62. | 1 | a | 1 |
  63. | 2 | NULL | 1 |
  64. | 2 | b | 1 |
  65. | 3 | NULL | 1 |
  66. | 3 | c | 1 |
  67. | 4 | NULL | 5 |
  68. | 4 | d | 5 |
  69. +------------+------------+------------+

ref: https://blog.csdn.net/qq_31573519/article/details/89054136

Hive高阶聚合函数 GROUPING SETS、Cube、Rollup的更多相关文章

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

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

  2. 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,st ...

  3. [Hive_11] Hive 的高级聚合函数

    0. 说明 Hive 的高级聚合函数 union all | grouping sets | cube | rollup pv //page view 页面访问量 uv //user view 访问人 ...

  4. 转:GROUPING SETS、ROLLUP、CUBE

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

  5. GROUPING SETS、ROLLUP、CUBE

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

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

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

  7. hive group by聚合函数增强

    1.grouping sets grouping sets子句都可以根据UNION连接的多个GROUP BY查询进行逻辑表示 SELECT a,b,SUM(c)FROM tab1 GROUP BY a ...

  8. Hive 高阶应用开发示例(一)

    Hive的一些常用的高阶开发 内容    1.开窗函数   2.行转列,列转行,多行转一行,一行转多行   3.分组: 增强型group   4.排序  5.关联 本次的内容: 内容1 和内容2,采用 ...

  9. Grouping Sets:CUBE和ROLLUP从句

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

随机推荐

  1. linux目录结构详细说明

    Linux各目录及每个目录的详细介绍 [常见目录说明] 目录 /bin 存放二进制可执行文件(ls,cat,mkdir等),常用命令一般都在这里. /etc 存放系统管理和配置文件 /home 存放所 ...

  2. linux 关于网络接口及配置工具说明

    在Linux操作系统中配置网络接口,一般是通过网络配置工具实现的,但最终目的还是通过网络配置工具来达到修改与网络相关的配置文件而起作用的.由此说来,我们配置网络可以直接修改配置文件. 比如网络网络接口 ...

  3. js生成二维码以及插入图片

    先根据qrcode官网demo,不同属性值的变化,二维码的变化效果:https://larsjung.de/jquery-qrcode/latest/demo/ 进入demo中,审查元素查看里面引用的 ...

  4. androidstudio如何用github多人开发

    一.首先我们利用github作为代码库,有两种方法可以创建代码库 一定要配置好git环境和创建好github账号 检测git环境配置 检测github账号是否能登录 成功就会 (1)在github中直 ...

  5. twisted(转)

    reactor.protocol 这两个类都在 twisted.internet 命名空间中 reactor对象是Twisted编程当中的第一步,它就是一个反应器,专门负责与服务端的连接以及监听与服务 ...

  6. PYTHON网络爬虫与信息提取[正则表达式的使用](单元七)

    正则表达式由字符和操作符构成 . 表示任何单个字符 []字符集,对单个字符给出取值范围 [abc]或者关系  [a-z]表示 [^abc]表示非这里面的东西 非字符集 * 表示星号之前的字符出现0次或 ...

  7. UWP获取任意网页加载完成后的HTML

    主要思想:通过后台WebView载入指定网页,再提取出WebView中的内容 关键代码: var html = await webView.InvokeScriptAsync("eval&q ...

  8. 【心有猛虎】react-pxq

    这是一个比较完整的简单的react移动端项目,说起来页面少,其实,构思若是精巧,也并不容易做 先放源码:https://github.com/bailicangdu/react-pxq 接下来我们简单 ...

  9. Centos7搭建Django出现的问题(Centos7+Django1.11.1+Nginx+uwsgi)

    出现的问题: 1.pip未安装:http://www.cnblogs.com/fnng/p/3737964.html 2.安装uwsgi失败,因为未安装python-devel yum search ...

  10. Directx11教程(7) 画一个颜色立方体

    原文:Directx11教程(7) 画一个颜色立方体       前面教程我们通过D3D11画了一个三角形,本章我们将画一个颜色立方体,它的立体感更强.主要的变动是ModelClass类,在Model ...