2015-03-25 41 views
0

這是我的初始表結構。明顯的計數不匹配

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 

我得到這樣一個= 4和B = 3,你認爲在這裏斷開連接。

謝謝

+0

如果您執行SELECT COUNT(DISTINCT MEMBER_ID),ACCOUNT FROM TABLE A GROUP BY ACCOUNT'而不是? – 2015-03-25 02:25:27

+0

這似乎不太可能。不幸的是,SQL Fiddle不支持teradata。 – 2015-03-25 02:25:29

+0

當我按列名替換列號時,會出現同樣結果。 – sai 2015-03-25 02:30:00

回答

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()也不是加法的(雖然它很容易重新計算)。

+0

那麼我們如何在不使用DISTINCT的情況下獲得成員的分割。 – sai 2015-03-25 03:12:38