首页 > 解决方案 > 使用 SQL COUNT(*) 并仅返回具有有效计数的结果

问题描述

我有一个包含列的学生表:

学生姓名 | 电子邮件 | 教师编号 | 老师的名字

目标是计算每位教师拥有的学生人数。

SELECT teacher_id, COUNT(*) AS active_students
FROM students
GROUP BY teacher_id;

使用上面的 SQL,我可以获得每个教师 ID 的计数。但是,当我包含teacher_name 时,我会收到错误消息。如果每个学生共享相同的老师,则每个学生可能具有相同的teacher_id,如果他们没有注册课程,则某些学生的teacher_id 为NULL。

如何更改我的查询,以便我可以计算每个teacher_id 拥有的学生人数,并在同一张表中包含其他列?

标签: mysqlsqlselectgroup-by

解决方案


只需将教师姓名添加到SELECTGROUP BY子句中:

SELECT teacher_id, teacher_name, COUNT(*) AS active_students
FROM students
GROUP BY teacher_id, teacher_name;

推荐阅读