hive grouping函数_Merge函数

hive grouping函数_Merge函数
Grouping函数:
可以接受一列,返回0或1。如果列值为空,则返回1,非空则返回0。它只能在rollup和或cube函数中使用,因为在统计中显示“全部”的那一项统计值时,那一项的标签通常是空的,这时grouping就非常有用,还可以在grouping的基础上进行decode,case等进行美化。
SQL>selectgrouping(index_type)g_ind,grouping(status)g_st,index_type,status,count

Grouping函数:
可以接受一列,返回0或1。如果列值为空,则返回1,非空则返回0。它只能在rollup和或cube函数中使用,因为在统计中显示“全部”的那一项统计值时,那一项的标签通常是空的,这时grouping就非常有用,还可以在grouping的基础上进行decode, case等进行美化。

SQL> select grouping(index_type) g_ind, grouping(status) g_st, index_type, status, count(*)
  2  from t group by rollup(index_type, status) order by 1, 2;

     G_IND       G_ST INDEX_TYPE                  STATUS     COUNT(*)
———- ———- ————————— ——– ———-
         0          0 LOB                         N/A               1
         0          0 LOB                         VALID           572
         0          0 FUNCTION-BASED NORMAL       VALID            17
         0          0 FUNCTION-BASED DOMAIN       VALID             1
         0          0 IOT – TOP                   VALID           115
         0          0 CLUSTER                     VALID            10
         0          0 NORMAL                      VALID          4557
         0          0 NORMAL                      N/A              56
         0          0 DOMAIN                      VALID             1
         0          0 BITMAP                      VALID             8
         0          0 BITMAP                      N/A               7
         0          1 IOT – TOP                                   115
         0          1 FUNCTION-BASED DOMAIN                         1
         0          1 DOMAIN                                        1
         0          1 CLUSTER                                      10
         0          1 BITMAP                                       15
         0          1 FUNCTION-BASED NORMAL                        17
         0          1 NORMAL                                     4613
         0          1 LOB                                         573
         1          1                                            5345

20 rows selected

Grouping_id函数:
比grouping还强点,可以接收多个列,这几个列都不为空时,返回0,只要有一个为空,则返回1,如果都为空,则返回3。
下面这条查询把grouping_id牛刀杀鸡,当做grouping用了,可以看到结果跟用grouping是完全一样。

SQL> select grouping_id(index_type) g_ind, grouping_id(status) g_st, index_type, status, count(*)
  2  from t group by rollup(index_type, status) order by 1, 2;

     G_IND       G_ST INDEX_TYPE                  STATUS     COUNT(*)
———- ———- ————————— ——– ———-
         0          0 LOB                         N/A               1
         0          0 LOB                         VALID           572
         0          0 FUNCTION-BASED NORMAL       VALID            17
         0          0 FUNCTION-BASED DOMAIN       VALID             1
         0          0 IOT – TOP                   VALID           115
         0          0 CLUSTER                     VALID            10
         0          0 NORMAL                      VALID          4557
         0          0 NORMAL                      N/A              56
         0          0 DOMAIN                      VALID             1
         0          0 BITMAP                      VALID             8
         0          0 BITMAP                      N/A               7
         0          1 IOT – TOP                                   115
         0          1 FUNCTION-BASED DOMAIN                         1
         0          1 DOMAIN                                        1
         0          1 CLUSTER                                      10
         0          1 BITMAP                                       15
         0          1 FUNCTION-BASED NORMAL                        17
         0          1 NORMAL                                     4613
         0          1 LOB                                         573
         1          1                                            5345

20 rows selected

下面这条查询才体现了grouping_id的作用。

SQL> select grouping_id(index_type, status) g_st, index_type, status, count(*)
  2  from t group by rollup(index_type, status) order by 1, 2;

      G_ST INDEX_TYPE                  STATUS     COUNT(*)
———- ————————— ——– ———-
         0 BITMAP                      VALID             8
         0 BITMAP                      N/A               7
         0 CLUSTER                     VALID            10
         0 DOMAIN                      VALID             1
         0 FUNCTION-BASED DOMAIN       VALID             1
         0 FUNCTION-BASED NORMAL       VALID            17
         0 IOT – TOP                   VALID           115
         0 LOB                         N/A               1
         0 LOB                         VALID           572
         0 NORMAL                      N/A              56
         0 NORMAL                      VALID          4557
         1 BITMAP                                       15
         1 CLUSTER                                      10
         1 DOMAIN                                        1
         1 FUNCTION-BASED DOMAIN                         1
         1 FUNCTION-BASED NORMAL                        17
         1 IOT – TOP                                   115
         1 LOB                                         573
         1 NORMAL                                     4613
         3                                            5345

20 rows selected

根据grouping_id接收不同的列的组合,可以美化出很神奇的结果。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/230880.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长

相关推荐

  • 3极管npn和pnp_npn开关电路工作原理

    3极管npn和pnp_npn开关电路工作原理===================================================================三极管,全称应为半导体三极管,也称双极型晶体管、晶体三极管,是一种电流控制电流的半导体器件·其作用是把微弱信号放大成幅度值较大的电信号,也用作无触点开关。晶体三极管,是半导体基本元器件之一,具有电流放大作用,是电子电路的核心元件。三极管是在一块半导体基片上制作…

    2022年9月20日
  • Pytorch(五)入门:DataLoader 和 Dataset

    Pytorch(五)入门:DataLoader 和 DatasetDataLoader和Dataset构建模型的基本方法,我们了解了。接下来,我们就要弄明白怎么对数据进行预处理,然后加载数据,我们以前手动加载数据的方式,在数据量小的时候,并没有太大问题,但是到了大数据量,我们需要使用shuffle,分割成mini-batch等操作的时候,我们可以使用PyTorch的API快速地完成这些操作。Dataset是一个包装类,用来将数据包装为Datas…

    2022年6月14日
  • matlab将txt数据分类,MATLAB读取txt文件,txt里面有字符串和数值两种类型

    matlab将txt数据分类,MATLAB读取txt文件,txt里面有字符串和数值两种类型MATLAB读取txt文件,txt里面有字符串和数值两种类型mip版关注:96答案:4悬赏:30解决时间2021-01-2908:48已解决2021-01-2815:04MATLAB读取txt文件,txt里面有字符串和数值两种类型,将txt文件读入MATLAB里,并得到一个矩阵。txt文件里面的数据如下:5.1,3.5,1.4,0.2,Iris-setosa4.9,3.0,1.4…

    2022年9月3日
  • host配置_win10hosts文件配置异常

    host配置_win10hosts文件配置异常host添加地址今天是我第一天入职,坐到工位的第一件事就是配置host,因为连接测试环境需要本地授权,所以要配置。这里简单记录下配置中遇到的问题和操作的步骤操作环境是win10,之前公司一直使用的win7系统,所以对win10系统不是很熟悉,还要多多使用才行。使用win自带功能添加1.点击【此电脑】,路径为:C:\Windows\System32\drivers\etc选择hos…

    2022年4月20日
  • 网络协议主要要素为(网络协议由什么组成)

    一、网络协议网络协议为计算机网络中进行数据交换而建立的规则、标准或约定的集合。1、OSI七层协议OSI是一个开放性的通信系统互连参考模型,他是一个定义得非常好的协议规范。OSI模型有7层结构,从上到下分别是7应用层6表示层5会话层4传输层3网络层2数据链路层1物理层。下面的图表显示不同的协议在最初OSI模型中的位置:7应用层例如HTTP、SMTP…

    2022年4月11日
  • Windows&Linux双系统安装流程

    Windows&Linux双系统安装流程注意事项:安装Windows&Linux双系统,最好先安装windows系统,否则可能会出现grub引导覆盖的问题。Window10系统安装1.制作启动盘(优启通链接)https://www.itsk.com/forum.php?mod=viewthread&tid=397875注:U盘尽量用品牌优盘,启动盘软件一定要选择好不然无法识别。优启通、优碟通、大白菜、老毛桃…

    2022年6月25日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号