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

SQL统计教师授课数:如何让未授课教师返回COUNT零值

解决教师唯一课程统计(含未授课教师返回0)的方案

嗨,这个问题我之前做教务系统统计的时候也碰到过!你之前的思路之所以漏了未授课的教师,是因为从授课记录出发做统计,相当于只筛选了有授课记录的教师,自然拿不到那些没开课的人。核心解决思路就是从教师表出发做左连接,确保所有教师都被纳入统计范围。

具体实现步骤

假设你有两张核心表:

  • teachers:存储所有教师的基础信息(字段:id, name)
  • teaches:存储授课记录(就是你给出的包含id, name, course_id, sec_id, semester, year的表)

直接用下面的SQL就能搞定:

SELECT
    t.id AS teacher_id,
    t.name AS teacher_name,
    COUNT(DISTINCT tc.course_id) AS unique_course_count
FROM
    teachers t
LEFT JOIN
    teaches tc ON t.id = tc.id  -- 注意:如果你的授课表中教师ID字段名是`teacher_id`,这里要改成`t.id = tc.teacher_id`
GROUP BY
    t.id, t.name;

关键逻辑解释

  • LEFT JOIN的作用:从teachers表取出所有教师记录,哪怕teaches表中没有对应授课记录,这时候该教师的course_id会是NULL
  • COUNT(DISTINCT ...):
    • DISTINCT保证同一教师的同一门课程,不管开了多少学期/多少班级,都只统计1次,满足“唯一课程数量”的要求
    • COUNT函数会自动忽略NULL值,所以没有授课记录的教师,统计结果就是0,完美符合你的需求

如果你的teaches表本身有重复的授课记录(比如同一教师同一课程的多条重复条目),也不用提前单独构建唯一课程表,COUNT(DISTINCT)已经帮你去重了,一步到位~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:33:57