Использование ГРУППЫ ПО winth ПРИСОЕДИНИТЬСЯ

#sql #join #group-by

Вопрос:

У меня возникли проблемы с использованием GROUP BY и JOIN

У меня есть 2 стола: 1. STUDENTS_TO_COURSE со столбцами course_id и student_id 2. Учащиеся со столбцами id, имя, возраст

Что мне нужно сделать, так это найти курс с самым высоким средним возрастом студентов

Я думал о том, чтобы использовать join для объединения этих таблиц, а затем каким-то образом сгруппировать их

Я также понимаю, что мне нужно использовать среднее значение для подсчета среднего возраста учащихся в объединенной таблице

 select STUDENTS_TO_COURSE.course_id as course_id,  students.id as student,  students.age as age  from STUDENTS_TO_COURSE join students on STUDENTS_TO_COURSE.student_id = students.id  

Я думал об этом уже несколько дней, но не мог придумать ни одной идеи

Есть ли какая-нибудь подсказка, как это решить?

Заранее спасибо

Ответ №1:

Попробуй это:

 select STUDENTS_TO_COURSE.course_id as course_id,  MAX(AVG(age)) as avg_age from STUDENTS_TO_COURSE join students on STUDENTS_TO_COURSE.student_id = students.id group by course_id,age  

Комментарии:

1. Спасибо, ваш ответ действительно помог мне, Хотя ваше решение работало неправильно, мне удалось немного улучшить его и получить правильный ответ. Правильный ответ select STUDENTS_TO_COURSE.course_id as course_id, AVG(age) as avg_age from STUDENTS_TO_COURSE join students on STUDENTS_TO_COURSE.student_id = students.id group by course_id order by avg_age desc limit 1

Ответ №2:

 select STUDENTS_TO_COURSE.course_id as course_id,  avg(age) as age  from STUDENTS_TO_COURSE join students on STUDENTS_TO_COURSE.student_id = students.id group by course_id order by age desc limit 1  

Ответ №3:

Если ваш SQL-код верен, ниже приведен список идентификаторов курсов и среднего возраста в порядке убывания среднего возраста. То, что вам нужно, находится в верхней строке списка.

 select   STUDENTS_TO_COURSE.course_id as course_id,   AVG(students.age) as avg_age from STUDENTS_TO_COURSE join students on STUDENTS_TO_COURSE.student_id = students.id GROUP BY STUDENTS_TO_COURSE.course_id ORDER BY AVG(students.age) DESC