蜂巢多次计数同一字段

时间:2018-07-23 07:13:52

标签: hive hiveql hadoop2

我需要计算来自哪个大学的学生人数,但是当我使用以下查询时

  

选择大学,按大学分组的学生为COUNT(*);

我得到了这个结果

enter image description here

结果显示同一所大学的人数不同 我应该在这里做什么,这样我才能获得适当的大学数量

1 个答案:

答案 0 :(得分:1)

似乎您在同一所大学中有许多不同的名字,

JIIT
"JIIT
jiit

尝试对其进行规范化(转换为大写并删除'"'),因此在JIIT之后将其与group by相同:

 select case when college = 'BSA' then 'BSA College of Technology'
        --add other cases
        else --rule for others
            trim(upper(regexp_replace(college,'"',''))) 
         end as college 
       ,COUNT(*)                                    as cnt 
   from students 
  group by 
        case when college = 'BSA' then 'BSA College of Technology'
        --add other cases
        else --rule for others
            trim(upper(regexp_replace(college,'"',''))) 
         end --the same sentence should be in group by, or use subquery instead
;

应用case将更复杂的字符串(例如MJP ROHILKHANDM J P ROHILKHAND)转换为相同的字符串。

这之所以发生是因为未对数据库进行规范化,并且按College维度对College列的输入没有限制。