我知道select count(distinct a)
,但我最近遇到select distinct count(a)
。
我不确定这是否有效。
如果它是有效的用途,你能给我一个带有样本数据的示例代码,这可以解释我的区别。
Hive不允许后者。
任何线索都将不胜感激!
答案 0 :(得分:4)
查询select count(distinct a)
会为您提供a。中唯一值的数量
查询select distinct count(a)
将为您提供一个唯一的值计数列表。如果没有分组,它将只是总计数的一行。
参见以下示例
create table t(a int)
insert into t values (1),(2),(3),(3)
select count (distinct a) from t
select distinct count (a) from t
group by a
第一次查询会为您3
,第二次查询会为1
和2
提供值。
答案 1 :(得分:2)
我想不出你想要使用的任何有用的情况:
select distinct count(a)
如果查询没有group by
,则distinct
是异常的。查询仅在行上返回。如果有group by
,则汇总列应位于select
中,以标识每一行。
我的意思是,从技术上讲,使用group by
,它会回答这个问题:" a
有多少个不同的非空值在组"中。通常,了解每组的价值会更有用。
如果您想计算a
的不同值的数量,请使用count(distinct a)
。