我需要使用MySQL脚本查找哪个老师和学生的课程重叠最多(如果有)。我用以下表格构建了自己的数据库: 学生(身份证,名字,姓氏) 教授(身份证,名字,姓氏) 课程(编号,名称) 成绩(学生编号,课程编号,作业,成绩)
思考过程:
我需要列出学生,老师和课程:
select distinct students.first_name, professors.first_name, course_name from grades
join students on grades.student_id = students.student_id
join courses on grades.course_id = courses.course_id
join professors on courses.professor_id = professors.professor_id
现在,我需要浏览信息以查找哪个学生正在同一位教授的课程中学习。我只是不知道如何在MySQL中实现它。
答案 0 :(得分:1)
使用您的查询作为基础,您可以group by
的学生和教授来获取普通课程的数量。
下面的查询返回具有最常见课程的学生和教授:
with cte as (
select
#I had to alias these column names to avoid a duplicate column name error (Quito)
students.first_name, students.last_name,
professors.first_name, professors.last_name,
count(distinct courses.id) counter
from grades
join students on grades.student_id = students.student_id
join courses on grades.course_id = courses.course_id
join professors on courses.professor_id = professors.professor_id
group by
students.first_name, students.last_name,
professors.first_name, professors.last_name
)
select * from cte
where cte.counter = (
select max(counter) from cte
)