2017-07-14 60 views
1

我知道select count(distinct a),但我最近遇到了select distinct count(a)选择不同计数和选择计数不同有什么区别?

我不太确定这是否有效。

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

蜂巢不允许后者。

任何线索将不胜感激!

回答

3

查询select count(distinct 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

+0

谢谢@Marek。与团队合作有意义。没有它没有意义! – samkart

2

我想不出任何有用的情况下,你可能需要使用:

select distinct count(a) 

如果查询没有group by,那么distinct是不正常的。无论如何,查询只返回行。如果有group by,则聚合列应位于select中,以标识每一行。

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

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

+0

我虽然一样。但是我不确定是否有没有分组的用例。谢谢! – samkart