首页 > 解决方案 > 每个部门的平均课程规模

问题描述

我正在尝试编写一个 SQL 查询,该查询返回每个部门、部门名称和注册该部门提供的课程的学生的平均人数。这里有三张桌子,

学生

NetId   VARCHAR(10)
FirstName   VARCHAR(255)
LastName    VARCHAR(255)
Department  VARCHAR(100)

招生

NetId   VARCHAR(10)
CRN INT
Credits INT
Score   REAL

培训班

CRN INT
Title   VARCHAR(255)
Department  VARCHAR(100)
Instructor  VARCHAR(255)

我已经写了

select c.Department,
       (select e.CRN as col1, count(e.NetId) as col2
        from Enrollments e
          join Courses c on e.CRN = c.CRN
        group by e.CRN) as t

但不知道如何继续。

这是预期的结果:
会计 4
CS 4
ECE 4
音乐 4
物理 4
心理学 4
体育 4
经济学 3
金融 3
统计 3

标签: sql

解决方案


这是一个聚合查询。我会LEFT JOIN用来包括没有课程的学生:

select c.Department,
       count(e.CRN) as num_students,
       count(distinct c.CRN) as num_departments,
       count(e.CRN) / count(distinct c.CRN) as avg_students_in_class
from Courses c left join
     Enrollments e
     on e.CRN = c.CRN
group by c.department

推荐阅读