2015-03-25 2 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, как вы думаете, это отключение здесь.

Thanks

+0

Что делать, если вы выполняете 'SELECT COUNT (DISTINCT MEMBER_ID), ACCOUNT FROM TABLE A GROUP BY ACCOUNT' вместо этого? –

+0

Это кажется маловероятным. К сожалению, SQL Fiddle не поддерживает teradata. –

+0

То же самое, когда я заменю номер столбца по имени столбца. – sai

ответ

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 будет учитываться дважды - один раз для А и один раз для В. Я думаю, что-то вроде этого для вашей реальной проблемы. COUNT(DISTINCT) is не добавка. Таким образом, когда вы разбиваете его отдельно, используя group by, сумма значений не является (обязательно) суммой для всех данных. Это отличается от MIN(), MAX(), COUNT(*) и SUM(). Однако AVG() также не является аддитивным (хотя он легко пересчитывается).

+0

Тогда как мы получим разделение членов без использования DISTINCT. – sai