如何在蜂巢中没有分组的情况下实现计数(不同)

时间:2019-04-01 17:50:53

标签: sql hive

我想在蜂巢中使用group by查找计数(不同的列名)。 我的输入是:

name  id
a      2
a      3
a      4
b      1
c      4
c      4
d      7
d      9

我的预期输出是

name   count
a       3
b       1
c       1
d       2

可以告诉我如何在不使用分组方式的情况下实现此目标。请帮助

3 个答案:

答案 0 :(得分:2)

没有显式group by的规范解决方案与select的区别在于窗口函数:

select distinct name, count(distinct id) over (partition by name)
from t;

对于您而言,我强烈建议您使用group by版本:

select name, count(distinct id)
from t
group by name;

答案 1 :(得分:0)

您可以使用子查询:

select distinct t.name,
       (select count(distinct id) from table t1 where t1.name = t.name) as count
from table t;

但是,GROUP BY确实是执行此操作的合适方法。

答案 2 :(得分:0)

只需将count聚合函数与distinct关键字一起使用

select name,count(distinct id) as cnt from table
group by name