sql - 每个部门的平均课程规模
问题描述
我正在尝试编写一个 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
解决方案
这是一个聚合查询。我会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
推荐阅读
- java - 在同一行中存储多个值的数据类型
- javascript - vuejs - 在同一个文件中同步变量
- java - 如何从java中的私钥中提取模数和私有指数?
- php - 通过 laravel Mysql 使用 Distinct 和 group
- django - Django Rest Framework:在 ModelViewSet 中覆盖 perform_create 的正确方法?
- python - 如何使用数据框中的 matplotlib 绘制这种类型的直方图
- php - 获取帖子元显示没有结果
- python - Python列表到JSON的问题
- android - RecyclerView 适配器无法工作
- excel - VBA清除单元格旁边的行内容