[英]SQL query help needed joining and counting within a table
這是我加入的第二篇文章。 現在我希望有一張表,其中包含男性和女性的總數...
我有一個名為babynames的表,看起來像這樣:
firstname |sex |year |count
Bob |M| 2010| 150
Bob |M| 2009| 100
Bob |M| 2008| 122
Bob |F| 2007| 2
Bob |F| 2001| 1
通過此查詢,我已經能夠計算所有男性和女性的嬰兒名字
SELECT
firstname, sum(count), sex
FROM babynames
GROUP BY firstname
HAVING COUNT(DISTINCT sex) = 2
結果表:
bob|375|M
這接近我想要的......但是
SELECT
firstname, sum(count), sex
FROM babynames GROUP BY firstname, sex
給我結果:
bob|372|M
bob|3|F
現在,我需要充分利用兩個世界,以便我的桌子只有性別匹配的名稱,理想情況如下:
firstname|male count| female count
bob |372|3
雖然我承認我需要一些SQL練習,但我很感激幫助將這個查詢拉到一起。 謝謝!!
SELECT firstname,
SUM(CASE WHEN sex = 'm' THEN count END) MaleCount,
SUM(CASE WHEN sex = 'f' THEN count END) FemaleCount
FROM babynames
GROUP BY firstname
嘗試這樣的事情:
select firstname, sum(malecount) males, sum(femalecount) females
from
(select 'boys' gender
,firstname
, 0 femalecount
, count(*) malecount
from babynames
where sex = 'male'
group by 'boys, firstname, 0
union
similar query for girls
) temp
group by firstname
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.