首页 > 解决方案 > Hive 拆分和总计

问题描述

所以,假设我想计算 2 列中“Class1”条目的数量……列中的每个输入都是一个字符串。

说我有输入数据:

column_1                    column_2
Class1;full;11;11           Class1;full;11;11
Class2;limited;11;11        Class1;full;11;11

期望的输出:

   Class        Total
    Class1      3
    Class2      1

实际输出:

   Class        Total
    Class1      2

但是,看起来拆分功能仅评估最后一列。

以下是我的查询...

SELECT  Class,COUNT(*) AS Total

FROM (SELECT ID 

        ,SPLIT(CLASS_LIST1,'\u0059')[0]
        ,SPLIT(CLASS_LIST2,'\u0059')[0]


            AS Class

FROM table

    )a

group by class

关于如何获得两列总数的任何想法?

标签: sqlhive

解决方案


使用UNION ALL

SELECT  Class,COUNT(*) AS Total
FROM (SELECT ID, SPLIT(CLASS_LIST1,'\073')[0] AS Class FROM table
      UNION ALL
      SELECT ID, SPLIT(CLASS_LIST2,'\073')[0] AS Class FROM table
    )a
group by class

推荐阅读