2017-02-03 27 views
0

我有一個表,我已經成功地範圍縮小到這一點:如何根據等於值的字符串屬性的數量進行分組?

Event  | Response 
------------ | ------ 
Birthday  | Yes 
Anniversary | No 
Anniversary | No 
Birthday  | Yes 
Birthday  | Yes 

我要計數的「是」回答每個事件的數量,所以最終產品應該是:

Event  | numYes 
------------ | ------ 
Birthday  | 3 
Anniversary | 0 

我想象它使用group by EventResponse = 'yes'的聚合,但我不知道如何使它工作

回答

3

試試這個:

select event, sum(Response = 'Yes') numYes 
from your_table 
group by event; 

它在MySQL中使用true爲1且false爲0的事實,並導致表達式更短。

實現同樣的事情的另一種方法是使用COUNT這樣的:

select event, count(case when Response = 'Yes' then 1 end) numYes 
from your_table 
group by event; 
+0

謝謝,對於SQL來說還是個新東西,並且必須跳過我讀數中的'sum'。正試圖使用​​'count' –

+0

@Tom現在看看更新的答案。使用COUNT添加了一些細節和另一個查詢 – GurV

1

嘗試:

SELECT Event, SUM(Response='Yes') numYes  
FROM  tablename 
GROUP BY Event 

這將選擇事件列,總結所有的行,其中一個響應='是的'爲該事件並將結果放在名爲「numYes」的列中。然後按事件分組以獲得每個事件的唯一實例。

+0

如果您編輯它以解釋爲什麼這是答案,您的答案會更有用。 – Blackwood

+0

@Blackwood增加了一些措辭 –

相關問題