SQL 分组统计

这里以下列‘廖雪峰的官方网站’在线SQL地址测试

https://www.liaoxuefeng.com/wiki/1177760294764384/1179611432985088
搜索后的原始数据源
SQL 分组统计_第1张图片

  • 原本想按gender进行二次分组,但发现分组后,统计的count(*),不是class_id下gender的去重的总数,而是以class_id,gender确认后组数的数量
SELECT class_id,gender,COUNT(*) AS number FROM students GROUP BY class_id,gender

SQL 分组统计_第2张图片

  • 与上图对比发现,count(*) 统计的是gender二次分组后,组内的列数
    SQL 分组统计_第3张图片

  • 解决方案一:

SELECT class_id,Count(distinct gender) as gender FROM students group by class_id;
  • 下图为理想效果,在不跨表的情况下
    SQL 分组统计_第4张图片
  • 解决方案二:
    先分组到临时表,在查询临时列分组
SELECT class_id,count(*) as number FROM 
(SELECT class_id,gender as number FROM students Group by class_id,gender)
 group by class_id

你可能感兴趣的:(SQL,sql,mysql,数据库)