【问题标题】:SQL query help needed joining and counting within a tableSQL 查询帮助需要在表中加入和计数
【发布时间】:2013-02-18 16:13:56
【问题描述】:

这是我的第二篇与我的加入相关的帖子。现在我想要一个表格,其中包含男性和女性的计数总和......

我有一个名为 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 练习,但如果能帮助我将这个查询组合在一起,我将不胜感激。谢谢!!

【问题讨论】:

  • 感谢 JW 的格式化 - 我会确保将来更好地格式化我的问题。

标签: sql select sum


【解决方案1】:
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

【讨论】:

  • 干得好!!我现在只需要过滤掉空值,我就是金!非常感谢!
【解决方案2】:

试试这样的:

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

【讨论】:

猜你喜欢
  • 2020-08-22
  • 2011-09-19
  • 2011-04-03
  • 2015-08-01
  • 2011-05-29
  • 1970-01-01
  • 1970-01-01
  • 2016-07-04
  • 2016-07-26
相关资源
最近更新 更多