【问题标题】:Count number of male and female统计男女人数
【发布时间】:2017-03-30 16:17:15
【问题描述】:

我想在一个名为 Gender 的表格中计算男性和女性的数量,下面给出了条目。答案应该是女性=2 男性=3。 SQL中有没有查询。

Gender
MALE
MaLE
FEMALE
Female

【问题讨论】:

  • 请把桌子给我们。
  • 告诉我们您希望在哪个数据库中使用这个 Oracle、MySql、SqlServer....
  • 存储它们的列的排序规则也很有用。
  • 表名是testcount。
  • 数据库是MySql

标签: sql


【解决方案1】:
SELECT SUM(CASE WHEN Gender = 'male' THEN 1 ELSE 0 END) as Male_count,
       SUM(CASE WHEN Gender = 'Female' THEN 1 ELSE 0 END) as Female_count
FROM some_unknown_table

正如 nightfox79 所提到的,如果您的默认排序规则区分大小写,您可能应该转换文本以确保它匹配。 所以,用这个

UPPER(GENDER) = 'MALE'
UPPER(GENDER) = 'FEMALE'

旁注:正如 Damien 所提到的,我认为您应该按照这种格式为 Gender 使用 tinyint 列。 https://en.wikipedia.org/wiki/ISO/IEC_5218

【讨论】:

  • 你应该做一个上或下的性别,看看他的例子
  • 是的,我会补充的。我已经习惯了不区分大小写的排序规则。谢谢!
  • 您建议使用bit 列,然后建议在其中存储值2?有趣的想法。我通常会推荐tinyint 并使用ISO/IEC 5218 - 即为什么发明一种新的编码方式?
  • 已更新。 @Damien_The_Unbeliever 我试过是否可以在位上插入 2 并且成功了;没有检查存储了什么值。谢谢~
【解决方案2】:

请试试这个:-

 Select count(CASE WHEN Gender = 'male' THEN 1 ELSE 0 END) as Male_count,
        count(CASE WHEN Gender = 'Female' THEN 1 ELSE 0 END) as Female_count
  FROM your_table

【讨论】:

    【解决方案3】:
    SELECT UPPER([Gender]),count(*)
      FROM [test].[dbo].[TableName] group by UPPER([Gender])
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-06-11
      • 1970-01-01
      • 2021-02-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-11
      相关资源
      最近更新 更多