基于双条件分组的MySQL查询:按部门与可用状态统计学生数
按部门与可用状态统计学生数量的MySQL查询方案
刚好处理过类似的统计需求,给你一个能完美适配后续新增部门场景的MySQL查询方案,直接上代码:
SELECT department, is_available, COUNT(*) AS student_count FROM students GROUP BY department, is_available ORDER BY department, is_available;
关键细节解释:
- 双重分组逻辑:
GROUP BY department, is_available会同时按部门和可用状态进行分组统计,不管后续新增多少部门,新部门的数据都会被自动纳入统计,完全不用修改查询语句 - 统计方式:用
COUNT(*)统计每个分组下的学生总数,如果你的表有主键(比如student_id),用COUNT(student_id)会更严谨,避免NULL值影响统计结果 - 结果排序:加上
ORDER BY是为了让输出结果按部门和状态排序,看起来更规整,这个可以根据需求选择是否保留
举个实际例子:
假设你的students表有以下数据:
| department | is_available |
|---|---|
| 计算机学院 | 1 |
| 计算机学院 | 1 |
| 文学院 | 0 |
| 文学院 | 1 |
| 外国语学院 | 1 |
执行上面的查询后,会得到这样的结果:
| department | is_available | student_count |
|---|---|---|
| 计算机学院 | 1 | 2 |
| 文学院 | 0 | 1 |
| 文学院 | 1 | 1 |
| 外国语学院 | 1 | 1 |
如果后续新增了"法学院"这类新部门,只要表中出现该部门的学生数据,查询就会自动统计法学院各状态的学生数量,完全不用调整语句~
内容的提问来源于stack exchange,提问作者usr021986
相关产品推荐
相关产品推荐

