【问题标题】:getting count from the same column in a mysql table?从 mysql 表中的同一列获取计数?
【发布时间】:2023-03-06 20:01:02
【问题描述】:

我想对不同值的相同字段进行计数,例如:

用户{user_id, 性别}

性别可以有明显的男性或女性:)

我想计算所有男性和女性的数量,即

COUNT(male)   COUNT(female)  
   4               16

但我很困惑,因为它们来自同一个gender coloumn 谢谢

【问题讨论】:

  • 您希望结果在同一列(两行)还是两列(一行)?
  • 好问题,我希望他们分成 3 行,包括总用户数、男性人数和女性人数

标签: mysql sql database


【解决方案1】:

试试这个以获得逐行结果:

SELECT gender, COUNT(User_id) AS count
FROM User
GROUP BY gender;

输出:

| gender | count |
|--------|-------|
|      F |     4 |
|      M |     2 |

试试这个以获得总计的逐行结果:

SELECT  (IFNull(gender,'Total')) AS gender,
COUNT(User_id) AS Count
FROM User
GROUP BY gender
WITH rollup;

输出:

| gender | Count |
|--------|-------|
|      F |     4 |
|      M |     2 |
|  Total |     6 |

试试这个列的结果:

SELECT
  COUNT(CASE WHEN gender = 'M' THEN User_id END) AS males,
  COUNT(CASE WHEN gender = 'F' THEN User_id END) AS females,
  COUNT(*) AS Total
FROM User;

输出:

| males | females | Total |
|-------|---------|-------|
|     2 |       4 |     6 |

See this SQLFiddle

【讨论】:

    【解决方案2】:

    试试这个: 总计数:

    Select gender,count(*) as count
    From User
    Group by gender
    with rollup
    

    SQl Fiddle demo

    【讨论】:

      【解决方案3】:

      根据您的评论,您希望计算男性、女性和总人数:

      SELECT sum(case when gender = 'M' then 1 else 0 end) males,
        sum(case when gender = 'F' then 1 else 0 end) females,
        count(*) total
      FROM  yourTable
      

      SQL Fiddle with Demo

      【讨论】:

        【解决方案4】:

        试试这个查询 -

        SELECT
          COUNT(IF(gender = 'M', User_id, NULL) males,
          COUNT(IF(gender = 'F', User_id, NULL) females
        FROM
          User
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2021-09-05
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-08-05
          • 2018-08-31
          相关资源
          最近更新 更多