蜂巢多次计数相同的字段

Posted

技术标签:

【中文标题】蜂巢多次计数相同的字段【英文标题】:hive counting same field many times 【发布时间】:2018-07-23 07:13:51 【问题描述】:

我需要计算有多少学生来自哪所大学,但是当我使用以下查询时

按大学从学生组中选择大学,COUNT(*);

我得到了这个结果

结果显示同一大学的不同计数 我应该在这里做什么,这样我才能得到正确的大学数量

【问题讨论】:

【参考方案1】:

你好像有很多不同名字的同一所大学,比如这些

JIIT
"JIIT
jiit

尝试对它们进行规范化(转换为大写并删除'"'),这样group by之后的JIIT将是相同的:

 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
;

应用caseMJP ROHILKHANDM J P ROHILKHAND 等更复杂的字符串转换为相同的字符串。

发生这种情况是因为数据库未规范化,并且 College 列的输入不受 College 维度的限制。

【讨论】:

感谢您的帮助,我可以对大学名称做一些简短的事情吗,比如在数据库中我有一些大学名称,它们是简短形式和完整形式的 @palashchoubey 只有这样:case college when 'One form' then 'another form' when 'this' then 'that' ... else college end as college,结合两种解决方案 @palashchoubey 使用更复杂的规则查看更新的答案。你看,你可以使用任何使用正则表达式、大小写等的技术来转换名称并在分组之前减少它们的种类

以上是关于蜂巢多次计数相同的字段的主要内容,如果未能解决你的问题,请参考以下文章

蜂巢计数和计数不同不正确

比较两个蜂巢表之间的计数

Qlik 从多个字段中获得不同的计数

获取 Table SQL 中相同字段的计数

SQL查询以查找表中列值多次出现的计数?

ACF 中继器字段返回包含中继器计数的字符串