2017-07-17 191 views
0

我有這個查詢,這給我很難找出問題,你的建議表示讚賞。SQL JOIN父母和孩子和GET父母和孩子記錄計數

SELECT 
    cooperatives.island, cooperatives.id, 
    COUNT(
    CASE WHEN members.gender = 'Male' THEN 1 ELSE NULL END 
) AS males, 
    COUNT(
    CASE WHEN members.gender = 'Female' THEN 1 ELSE NULL END 
) AS females, 
    COUNT(members.gender) AS genderall 
FROM 
    cooperatives 
JOIN members ON cooperatives.id= members.c_id 
WHERE 
    1 = 1 
GROUP BY 
    cooperatives.island 

什麼我試圖做的是讓導致這樣

SQL result

這是工作,但我需要添加有另一列,它會顯示一些合作社從各島。

+0

時,當計數則不要使用else語句您正在使用的情況。 –

回答

2

我懷疑你想:

SELECT c.island, COUNT(DISTINCT c.id) as num_cooperatives, 
     SUM(m.gender = 'Male') AS males, 
     SUM(m.gender = 'Female') AS females, 
     COUNT(m.gender) AS genderall 
FROM cooperatives c JOIN 
    members m 
    ON c.id = m.c_id 
GROUP BY c.island; 
+0

謝謝研究員這是我失蹤的 –