2011-08-05 29 views
3

我有一張表,其中3列爲country,user_id,genderuser_id只是增加,有很多不同的國家和性別是男性或女性。與此相似MySQL - 計算按國家分組的男性和女性的數量

user_id country gender 
1  japan male 
2  peru  female 
3  japan female 
4  fiji  male 
5  peru  female 

我想運行一個查詢返回的國家的唯一列表中,user_id的面向全國,男性和女性人數每個國家的總數。這樣的結果會是什麼樣子:

country total male female 
peru 2  NUL 2 
japan 2  1 1 
fiji 1  1 NUL 

我已經嘗試了一些目前存在的查詢,但在一個查詢無法返回所有結果,不希望儘可能使用2個查詢。

這是我最後一次嘗試 - 我知道它的一個爛攤子,但我想任何事情:

SELECT DISTINCT a.country AS country, COUNT(b.gender) AS male, COUNT(c.gender) AS  female, COUNT(a.user_id) AS total 
    FROM userattributes as a 
    LEFT JOIN userattributes as b ON a.user_id=b.user_id 
    LEFT JOIN userattributes as c ON a.user_id=c.user_id 
    WHERE b.gender='male' AND c.gender='female' 
    GROUP BY country; 

任何人都可以做到上面的一個SELECT

THX

回答

3

有沒有必要JOIN與自己的表。使用CASE表達式和SUM聚合就足夠了。

+0

+1(也可以使用count(..然後1,否則返回null)) –

+0

@Alex K. - 那是我第一次嘗試,但如我所料沒有奏效。 –

相關問題