Count Distinct未按预期工作,输出等于Count



我有一个表,试图计算每个组的不同成员数。我知道基于count(distinct*(函数存在重复项。但是,当我试图将它们分组并进行不同的计数时,这并不是我所期望的数字。

select count(distinct memberid), count(*) 
from dbo.condition c 

输出:

计数
303781348722

第二个查询没有任何问题。由于您在">groupid";字段,您得到的输出告诉您在"的相同groupid中没有重复memberid";值(基本上,对值进行计数等同于独特地计数(。

另一方面,在第一个查询中,聚合在没有任何分区的情况下进行,分区的输出提示在不同的"之间存在重复值groupid";价值观

随意添加了一个例子来证实你的答案:

create table aa (groupid int not null, memberid int not null );
insert into aa (groupid, memberid) 
values 
(1, 1), (1, 2), (1, 3), (2, 1), (3, 1), (3, 2), (3, 3), (4, 1), (4, 2), (4, 3), (4, 5), (5, 3)
select groupid, count(*), count(distinct memberid) 
from aa group by groupid;
select count(*), count(distinct memberid) 
from aa

最新更新