我需要计算来自哪个大学的学生人数,但是当我使用以下查询时
选择大学,按大学分组的学生为COUNT(*);
我得到了这个结果
结果显示同一所大学的人数不同 我应该在这里做什么,这样我才能获得适当的大学数量
答案 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 ROHILKHAND
和M J P ROHILKHAND
)转换为相同的字符串。
这之所以发生是因为未对数据库进行规范化,并且按College维度对College
列的输入没有限制。