选择不同计数和选择计数不同之间的区别是什么?

时间:2017-07-14 17:22:59

标签: sql count distinct

我知道select count(distinct a),但我最近遇到select distinct count(a)

我不确定这是否有效。

如果它是有效的用途,你能给我一个带有样本数据的示例代码,这可以解释我的区别。

Hive不允许后者。

任何线索都将不胜感激!

2 个答案:

答案 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,第二次查询会为12提供值。

答案 1 :(得分:2)

我想不出你想要使用的任何有用的情况:

select distinct count(a)

如果查询没有group by,则distinct是异常的。查询仅在行上返回。如果有group by,则汇总列应位于select中,以标识每一行。

我的意思是,从技术上讲,使用group by,它会回答这个问题:" a有多少个不同的非空值在组"中。通常,了解每组的价值会更有用。

如果您想计算a的不同值的数量,请使用count(distinct a)