我的SQL计数问题

时间:2011-08-03 18:01:18

标签: php mysql count report

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

性别:

  1. 婚姻状况:

    1. 寡妇
    2. 已婚
    3. 我想要显示一张报告,表中有多少男性和女性。也与婚姻状况相同..我需要一个查询报告。

      类似,Count(男性)= 100,Count(女性)= 140。

      喜欢,Count(已婚)= 120,Count(单曲)= 100,Count(winddow)= 10。

      请给我Mysql / PHP解决方案。

      列数据详细信息..

      |性别|婚姻状况|

      1               2
      1               3
      2               2
      2               1
      

      谢谢,

3 个答案:

答案 0 :(得分:6)

一个常见的技巧是使用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实现中不是这种情况,因此您必须写出更长的{{1} }表达式,如果你想支持标准。

答案 1 :(得分:1)

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

答案 2 :(得分:1)

你好吗

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