寻找拥有最多共同课程的学生和老师

时间:2019-03-22 19:40:22

标签: mysql

我需要使用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

Result of above query

现在,我需要浏览信息以查找哪个学生正在同一位教授的课程中学习。我只是不知道如何在MySQL中实现它。

1 个答案:

答案 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
)