2013-03-11 48 views
0

我有10列,列出營銷活動的結果,包括人名,日期,居住區,請求和響應表0。SQL:聚合函數返回時使用WHERE過濾

請求列始終是一個數字,表示我們發送一個特定的人的調查請求的數量。

響應列是從0的數X,表示調查人員已經響應取數。

現在,當我期待通過實際的表,有可能緩解率在10%左右。響應列中有大量非零條目。

然而,當我寫這樣一個聚合函數:

SELECT person, date, SUM(requests), SUM(response) 
FROM analytics.SurveyResults0304 
WHERE group_type = 'Youth' 
GROUP BY person, date; 

我得到SUM(請求)正確的數字,但我得到了SUM(響應)大發「0」? 所有3組類型都是一樣的。它返回一個0,SUM(響應)

更新:當我不包括group_type過濾器,它工作正常,但怎麼來的,我不能用WHERE過濾器使用它呢?

謝謝!

EDIT2:樣品表

Person Date  Group_Type Requests Response Neighborhood FirstName 
    -------- -------- ----------- -------- -------- ------------ --------- 
    Nixon  3/3/2013 Youth   3  3 Chinatown Richard 
    Clinton 3/3/2013 Youth   4  0 Gunhill  Bill 
    Mao  3/3/2013 Youth   5  0 Berryville Chairman 
    Nixon  3/4/2013 Youth   17  2 Townsford Richard 
    Gates  3/3/2013 Elderly  41  5 Chinatown Bill 
    Gates  3/4/2013 Elderly  0  0 Chinatown Bill 
    Gates  3/5/2013 Elderly  0  0 Chinatown Bill 
    Gates  3/6/2013 Elderly  0  0 Chinatown Bill 

例如 當我做:

SELECT SUM(requests), SUM(response) 
FROM analytics.SurveyResults0304 
WHERE group_type = 'Youth'; 

它返回70,用於請求; 0全線響應。

+3

你能給你想要的結果的smple記錄嗎? – 2013-03-11 14:18:53

+1

做SELECT響應FROM analytics.SurveyResults0304 WHERE group_type ='Youth' - 你會得到任何非零值嗎? – barc0de 2013-03-11 14:21:22

+0

barc0de:有趣的是:它仍然只返回0.也許這不是聚集了我的功能。 – 2013-03-11 14:25:22

回答

1

您的代碼似乎是工作。請參閱從您的數據樣本構建的SQL Fiddle

可能是您的列中有多餘空格和/或製表符

PERSON DATE     SUM(REQUESTS) SUM(RESPONSE) 
-------------------------------------------------------- 
Clinton March, 03 2013 00:00:00+0000 4 0 
Mao  March, 03 2013 00:00:00+0000 5 0 
Nixon March, 03 2013 00:00:00+0000 3 3 
Nixon March, 04 2013 00:00:00+0000 17 2 
+0

感謝您的幫助!事實證明,這不是我的代碼,這是問題,這是表的問題。 – 2013-03-11 14:59:55