【问题标题】:My SQL Count ProblemMysql计数问题
【发布时间】:2011-08-03 18:01:17
【问题描述】:

我有 GENDER 和 Marital_status 列以整数值存储数据

性别:

  1. 女性

婚姻状况:

  1. 单人
  2. 寡妇
  3. 已婚

我想显示此表中有多少男性和女性的报告。也与婚姻状况相同.. 我需要一个查询才能获得此报告。

比如,Count(Male) =100 和 Count(female)=140 这个。

比如,Count(married) =120, Count(single)=100 and Count(window)=10 this.

请给我Mysql/PHP的解决方案。

列数据详情..

|性别 |婚姻状况 |

1               2
1               3
2               2
2               1

谢谢,

【问题讨论】:

  • 您需要两个查询吗?还是一份用于性别报告,另一份用于婚姻状况?
  • 我尝试使用它但没有运气SELECT COUNT(Gender) as Female from personal WHERE Gender = 1 UNION SELECT COUNT(Gender) as Male from personal WHERE Gender = 2
  • 好的,如果它在两个查询中完成,那么没问题..

标签: php mysql count report


【解决方案1】:

一个常见的技巧是使用 SUM 而不是 COUNT,并在 SUM 中放置一个表达式,在要计算的行上为 1,否则为 0。 1 的 SUM 等于它们的 COUNT。

SELECT
  SUM(Gender=1) AS Male_Count,
  SUM(Gender=2) AS Female_Count,
  SUM(Marital_status=1) AS Single_Count,
  SUM(Marital_status=2) AS Widowed_Count,
  SUM(Marital_status=3) AS Married_Count
FROM mytable;

在 MySQL 中,布尔表达式(例如相等比较)返回 1 或 0。在标准 ANSI SQL 或大多数其他 RDBMS 实现中,情况并非如此,因此您必须写出更长的 CASE 表达式如果你想支持标准。

【讨论】:

    【解决方案2】:
    select
    sum(case when gender = 1 then 1 else 0 end) as male,
    sum(case when gender = 2 then 1 else 0 end) as female,
    sum(case when gender = 1 and status = 1 then 1 else 0 end) as male_singles,
    .... and so on
    from table
    

    【讨论】:

      【解决方案3】:

      你在吗

       SELECT gender,status,count(*) FROM table GROUP BY gender,status
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-03-14
        • 2012-01-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-06-03
        相关资源
        最近更新 更多