【发布时间】:2022-01-24 18:54:33
【问题描述】:
表格:
- 部门(dept_id,dept_name)
- 学生(student_id、student_name、专业、水平、年龄)
- 教授(prof_id、prof_name、dept_id)
- 课程(课程代码、名称)
- semester_course(course_code、季度、年份、prof_id)
- 已注册(student_id、course_code、季度、年份、注册时间)
问题是查找教授总教数少于 3门课程
我的查询现在看起来像
select d.dept_name,d.dept_id FROM department as d
WHERE d.dept_id in (
select d1.dept_id from department d1,professor p1
where p1.dept_id = d1.dept_id AND p1.prof_id IN (
select p2.prof_id from professor p2,semester_course sc
WHERE sc.prof_id = p2.prof_id GROUP BY sc.course_code having count(*) < 3
) );
它会返回错误的结果,有什么帮助吗?
【问题讨论】:
-
请学习使用 ANSI JOIN 而不是叉积。它使查询更易于阅读和编写。
-
您不应该按课程代码分组。这是计算每门课程的教授人数,而不是教授教授的课程数量。
-
您需要获取按部门分组的课程数量。
-
所以我尝试了 GROUP BY p2.prof_id 的 count(*)
-
再次阅读作业:“教授共同教授的课程少于3门的部门”。所以你需要
COUNT(DISTINCT course_id)和GROUP BY dept_id。