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

Oracle SQL入门:关联两表统计讲师授课章节数并排序

Oracle SQL 关联查询统计讲师授课章节数

假设两张表的关联字段为 Instructor.INSTRUCTOR_ID 和 Section.INSTRUCTOR_ID,以下是两种业务场景的正确SQL写法:

场景1:仅统计有授课记录的讲师

SELECT
    i.FIRST_NAME,
    i.LAST_NAME,
    COUNT(s.SECTION_ID) AS section_count
FROM
    Instructor i
JOIN
    Section s ON i.INSTRUCTOR_ID = s.INSTRUCTOR_ID
GROUP BY
    i.FIRST_NAME, i.LAST_NAME
ORDER BY
    section_count DESC;

场景2:统计所有讲师(含未授课的,章节数显示0)

SELECT
    i.FIRST_NAME,
    i.LAST_NAME,
    COUNT(s.SECTION_ID) AS section_count
FROM
    Instructor i
LEFT JOIN
    Section s ON i.INSTRUCTOR_ID = s.INSTRUCTOR_ID
GROUP BY
    i.FIRST_NAME, i.LAST_NAME
ORDER BY
    section_count DESC;

关键说明:

  • 内连接(JOIN)仅返回两表匹配的记录,即只统计有授课记录的讲师;左连接(LEFT JOIN)会保留所有讲师数据,未授课讲师的章节数统计为0。
  • GROUP BY 必须包含所有非聚合字段(这里的FIRST_NAME和LAST_NAME),否则Oracle会抛出语法错误。
  • 用COUNT(s.SECTION_ID)统计章节数比COUNT(*)更严谨,可避免因关联字段为NULL导致的统计偏差。
  • ORDER BY section_count DESC 实现按章节总数降序排列。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 21:25:23