2012-07-23 58 views
2

我需要找到一種方法來計算居住在同一家中並且投票了「DEMO」,「REP」或「DEMO-REP」的選民人數。我已經得到這個目前爲止,http://sqlfiddle.com/#!3/469d4/3對滿足兩個單獨標準的人員的查詢

例如,英里和Raquel住在同一個房子,並且都投了'REP',他們將被計入'REP'列。克里斯和塔尼亞都住在同一棟房子裏,並投了'REP'和'DEMO',所以他們將進入'DEMO-REP'專欄。 小提琴結果需要。

1 http://img824.imageshack.us/img824/3305/resultbx.png

在此先感謝

+0

不知道我理解。看起來你有來自7個不同家庭的11票,但只佔4個。你是否不想只返回一次投票結果? – 2012-07-23 16:19:22

+0

是的,在真正的查詢中,我想要返回只投一次的家庭的結果,我只是將這部分留給了這個問題。謝謝 – user973671 2012-07-23 16:36:41

回答

0

我想這你想要做什麼:

select sum(votes) as total, sum(demo*(1-rep)) as demoonly, 
     sum(rep*(1-demo)) as reponly, sum(demo*rep) as demorep 
from (select address, cont(*) as votes, 
      max(case when voted = 'DEMO' then 1 else 0 end) as demo, 
      max(case when voted = 'REP' then 1 else 0 end) as rep 
     from t 
     group by address 
    ) t 

假設你想戶(地址)與一個以上的人:

select sum(votes) as total, sum(demo*(1-rep)) as demoonly, 
     sum(rep*(1-demo)) as reponly, sum(demo*rep) as demorep 
from (select address, count(*) as votes, 
      max(case when voted = 'DEMO' then 1 else 0 end) as demo, 
      max(case when voted = 'REP' then 1 else 0 end) as rep 
     from test4 
     group by address 
     having count(distinct name) > 1 
    ) t 

在這裏,我假設「地址」是家庭的代理人,因爲數據中沒有家庭字段。

+1

我不認爲這會給出正確的結果,我讓它在小提琴上工作,http://sqlfiddle.com/#!3/469d4/23。謝謝 – user973671 2012-07-23 16:42:51

+0

您是否修復了查詢?我想你在我回答後澄清了這個問題。 – 2012-07-23 17:23:12

+0

不,它仍然是不固定的,謝謝 – user973671 2012-07-23 21:49:08

0

編輯:這適用於您的SQL小提琴代碼。

我會這樣:

SELECT COUNT(Voted) AS TOTAL, 
(
SELECT COUNT(DISTINCT address) FROM test4 
WHERE address NOT IN (SELECT address FROM test4 WHERE Voted = 'REP') 
) AS Demo, 
(SELECT COUNT(DISTINCT address) FROM test4 
WHERE address NOT IN (SELECT address FROM test4 WHERE Voted = 'DEMO') 
) AS Rep, 
(SELECT COUNT(DISTINCT address) FROM test4 
WHERE address IN (SELECT address FROM test4 WHERE Voted = 'REP') AND address IN (SELECT address FROM test4 WHERE Voted = 'DEMO') 
) AS DemoRep 
    FROM test4 
+0

不幸的是,表中沒有HouseholdID,謝謝 – user973671 2012-07-23 16:54:30

+0

如果您將「Address」替換爲「HouseholdID」,它應該也能正常工作。 – ristonj 2012-07-23 19:52:18

+0

對不起,我覺得有些困惑,如果地址匹配,那麼家庭應該被視爲一個家庭,唯一的家庭應該出現在結果中。謝謝 – user973671 2012-07-23 22:03:09