You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用COUNT(*)关联其他表按条件分组统计各部门学生人数

原语句错误原因

  • 子查询未和外层的部门表做字段关联,导致统计的是所有部门的学生总人数,而非单个部门对应的学生数
  • 缺少GROUP BY分组逻辑,直接查询非聚合字段(DepartmentId、Name)和聚合统计结果,不符合SQL分组语法规范

修正方案

推荐使用LEFT JOIN + GROUP BY的写法,性能更优,同时兼容无学生的部门也会显示人数为0:

SELECT 
  d.DepartmentId,
  d.Name,
  COUNT(s.StudentId) AS NumberOfStudents
FROM Departments d
LEFT JOIN Students s ON d.DepartmentId = s.DepartmentId
GROUP BY d.DepartmentId, d.Name

如果要保留子查询的写法,可修改为关联外层部门表的版本:

SELECT 
  d.DepartmentId,
  d.Name,
  (SELECT COUNT(*) FROM Students s WHERE s.DepartmentId = d.DepartmentId) AS NumberOfStudents
FROM Departments d

两种写法都可以输出你预期的统计结果。


内容的提问来源于stack exchange,提问作者abdou93

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 15:15:04