1

これは私の参加に関連する私の2番目の投稿です。ここで、男性と女性のカウントの合計を含むテーブルが必要です...

私は次のように見える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の練習が必要なことは認めますが、このクエリをまとめるのに役立つ情報をいただければ幸いです。ありがとう!!

4

2 に答える 2

3
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
于 2013-02-18T16:16:57.353 に答える
0

次のようなことを試してください:

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
于 2013-02-18T16:21:29.493 に答える