2013-03-11 2 views
0

나는 지방별로 그룹화 된 이메일 주소의 뚜렷한 숫자를 얻으 려하고 있습니다. 그리고 이상한 가치를주는 것 같습니다.MySQL 이상한 일들이 일어나고 있습니다.

나는 각 지방

SELECT COUNT(DISTINCT(email_address)) as COUNT 
FROM entries 
WHERE subscribe='1' 
AND province='ns' 

그들 모두를 추가하기위한 다음 (지방에 대해서는 다른 이메일 주소를 계산)을 할 경우. 난 그냥 할 경우 다음 대략 200 더 많은 숫자를 얻기도

SELECT COUNT(DISTINCT(email_address)) as COUNT 
FROM entries 
WHERE subscribe='1' 
AND province IN('ns','nb','pei') 

일치하지만

SELECT COUNT(DISTINCT(email_address)) as COUNT 
FROM entries 
WHERE subscribe='1' 
을 할 경우

SELECT COUNT(DISTINCT(email_address)) as COUNT 
FROM entries 
WHERE subscribe='1' 
GROUP BY province 

일치하지 않는

SELECT COUNT(DISTINCT(email_address)) as COUNT 
FROM entries 
WHERE subscribe='1' 

그래서 두 번째와 네 번째 일치하고, 1 위와 3 위와 5 위가 일치합니다. 하지만 2/4는 1/3/5 이상으로 200입니다.

내가 원하는 것은 지역별로 그룹화 된 1 개의 고유 이메일 주소 수입니다. 그리고 그것은 불가능한 것 같습니다.

+1

같은 찾고있는 무슨이 당신의 불일치가

어느 방법으로오고있다 할 수있다

SELECT email_address, count(distinct province) FROM entries WHERE subscribe = '1' GROUP BY email_address HAVING count(distinct province) > 1 

,이 쿼리가 당신을 줄 것이다 테스트 쿼리를 수행 할 수 있습니다 여러 주에 등록 된 이메일? 카운트의 기반이되는 기초를 바꾸고 있기 때문에 다양한 버전을 실제로 비교할 수는 없습니다. 그룹을 지정하지 않으면 + 조건이 크게 바뀝니다. –

답변

0

이메일 주소가 둘 이상의성에 묶여있을 가능성이 있습니까? 당신은 당신이

SELECT province, COUNT(DISTINCT email_address) as COUNT 
FROM entries 
WHERE subscribe = '1' 
GROUP BY province 
ORDER BY province 
+0

이메일 주소 (# 5)에서 고유 번호를 지정하면 200보다 큰 숫자가 반환됩니다. – Steven

+0

@Steven 또 다른 가능성에 대한 내 대답을 업데이 트 (그리고 내 원래 대답을 아래쪽으로 이동) –

+0

그것은 문제가 나타납니다. – Steven

관련 문제