蜂巢多次计数相同的字段
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
;
应用case
将MJP ROHILKHAND
和M J P ROHILKHAND
等更复杂的字符串转换为相同的字符串。
发生这种情况是因为数据库未规范化,并且 College
列的输入不受 College 维度的限制。
【讨论】:
感谢您的帮助,我可以对大学名称做一些简短的事情吗,比如在数据库中我有一些大学名称,它们是简短形式和完整形式的 @palashchoubey 只有这样:case college when 'One form' then 'another form' when 'this' then 'that' ... else college end as college
,结合两种解决方案
@palashchoubey 使用更复杂的规则查看更新的答案。你看,你可以使用任何使用正则表达式、大小写等的技术来转换名称并在分组之前减少它们的种类以上是关于蜂巢多次计数相同的字段的主要内容,如果未能解决你的问题,请参考以下文章