不同的计数不匹配

时间:2015-03-25 02:22:50

标签: sql teradata

这是我的初始表结构。

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的东西,你觉得这里的脱节是什么。

由于

1 个答案:

答案 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 byMEMBER_ID = 1将被计算两次 - 一次用于A,一次用于B.我的猜测是这样的事情正在发生在您的真正问题上。 COUNT(DISTINCT) 不是添加剂。因此,当您使用group by分开时,值的总和不是(必然)所有数据的总和。这与MIN()MAX()COUNT(*)SUM()不同。但是,AVG()也不是附加的(尽管很容易重新计算)。