如何使用group by在hive查询中查找表行计数

时间:2016-12-28 04:22:33

标签: hadoop hive

这里是我的问题:我有一个包含某些记录的表(如名称,日期,类型)。假设我有三种类型a,b和c。现在我想计算每种类型的百分比意味着COUNT(类型)/ COUNT(表行数)??

       select type,COUNT(type) as counttype,counttype/(select COUNT(*) from xyz) from xyz group by xyz;

“(从xyz中选择COUNT(*))”这给了我错误。 如何查找表Row Count?

2 个答案:

答案 0 :(得分:0)

您可以使用以下查询: -

从中选择A.type,A.type_cnt,(A.type_cnt / B.total_cnt) (按类型从xyz组中选择类型,计数(类型)为type_cnt)A 加入 (从xyz中选择count(*)为total_cnt)B ON 1 = 1;

答案 1 :(得分:0)

如果没有JOIN,使用分析函数会更快:

select type,
       count(type) as type_cnt, 
       count(type)/count(*) over() as pct  
  from xyz 
 group by type;