mysql - 如何按组分隔两列计数?

标签 mysql sql group-by

当我这样做时,

SELECT id, gender, count(1)
FROM class_student
WHERE id = 1
GROUP BY gender

我明白了

id  gender    count
--------------------
1   female    10
1   male      5  

我怎样才能得到这个?

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 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 

关于mysql - 如何按组分隔两列计数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43730943/

相关文章:

sql - MS Access 中的多字段关系

mysql - 如何通过SQL合并相似的项目?

python - 每组缺失值的 Pandas 插补

python - 如何绘制分组数据?

mysql - SQL SUM() 函数字段

php - PHP什么是Ubuntu中的MySql管理器

mysql - 使用 SELECT/LIMIT 1/FOR UPDATE 时避免死锁的最佳方法是什么?

python - Pandas 分组排序

mysql - RDBMS MySQL 中的 sqoop 导出更新表记录

Java - 无需在代码中指定用户名和密码即可连接到 MySQL