这是我的初始表结构。
MEMBER_ID ITEM_ID ACCOUNT
1 3 A
1 4 A
2 1 B
3 4 B
4 4 B
5 4 A
6 2 A
当我想要我所做的不同数量的成员时
Select COUNT(DISTINCT MEMBER_ID) FROM TABLE A
我得到6,预期答案
当我这样做时
SELECT COUNT(DISTINCT MEMBER_ID),ACCOUNT FROM TABLE A GROUP BY 2
我得到类似A = 4和B = 3的东西,你觉得这里的脱节是什么。
由于
答案 0 :(得分:0)
我发现结果不太可能。但是,如果数据略有不同,你会得到4和3:
MEMBER_ID ITEM_ID ACCOUNT
1 3 A
1 4 B
2 1 B
3 4 B
4 4 A
5 4 A
6 2 A
使用group by
,MEMBER_ID = 1
将被计算两次 - 一次用于A,一次用于B.我的猜测是这样的事情正在发生在您的真正问题上。 COUNT(DISTINCT)
不是添加剂。因此,当您使用group by
分开时,值的总和不是(必然)所有数据的总和。这与MIN()
,MAX()
,COUNT(*)
和SUM()
不同。但是,AVG()
也不是附加的(尽管很容易重新计算)。