Mysql 如何按分组方式分隔两列计数?

Mysql 如何按分组方式分隔两列计数?,mysql,sql,group-by,Mysql,Sql,Group By,当我这样做的时候 SELECT id, gender, count(1) FROM class_student WHERE id = 1 GROUP BY gender 我明白了 我怎么能得到这个 id female male --------------- 1 10 5 下面的查询是正确的方法吗 SELECT id, (select count(1) from class_student where id = 1 AND gender='female')

当我这样做的时候

SELECT id, gender, count(1)
FROM class_student
WHERE id = 1
GROUP BY gender
我明白了

我怎么能得到这个

id female male
---------------
1  10     5
下面的查询是正确的方法吗

SELECT
    id,
    (select count(1) from class_student
     where id = 1 AND gender='female') AS female,
    (select count(1) from class_student
     where id = 1 AND gender='male') AS male
FROM class_student
GROUP BY id

您可以在以下情况下使用select with case:

  SELECT id
         , sum(case when gender = 'male' then 1 else 0 end) male, 
         , sum(case when gender = 'female' then 1 else 0 end) female
    FROM class_student
    WHERE id = 1
    GROUP BY id 

您可以使用案例

SELECT id, SUM(case when gender = 'male' then 1 else 0 end) male, SUM(case when gender = 'female' then 1 else 0 end) female
    FROM CLASS_STUDENT
    WHERE id = 1
    GROUP BY id;

检查此答案是否应该是
按id分组
SELECT id, SUM(case when gender = 'male' then 1 else 0 end) male, SUM(case when gender = 'female' then 1 else 0 end) female
    FROM CLASS_STUDENT
    WHERE id = 1
    GROUP BY id;