MySQL выбрать максимальное значение для группы и всю строку с этим значеним
MySQL 5.7
Покажите как правильно сделать выборку из таблицы.
Нужно для каждого студента оставить преподавателя у которого counter максимальный
К примеру у меня есть таблица
stud id_prepod counter
иванов 1111 1
иванов 2222 4
петров 1111 2
В результате я хочу видеть иванова с преподавателем 2222 так как у него максимальный counter и петрова
stud id_prepod counter
иванов 2222 4
петров 1111 2
Ответы (2 шт):
Автор решения: Novitskiy Denis
→ Ссылка
Можно найти с помощью такого запроса
select s1.*
from student s1
left join student s2 on s1.stud=s2.stud and s2.counter>s1.counter
where s2.id_prepod is null
Или же вариант с подзапросом, который Вы же и использовали уже ранее в другом вопросе - тут
select s1.stud, s1.id_prepod, s1.counter
from student s1
join (select s2.stud, max(s2.counter) as counter
from student s2 group by s2.stud) s3
on s1.stud=s3.stud and s1.counter=s3.counter
Тут фиддл
Автор решения: Маруся
→ Ссылка
Препод выбирается первый попавшийся в таблице, удовлетворяющий условию макс(счётчик)
SELECT
stud AS [Student],
First(idp) AS [id_prepod],
Max(cnt) AS [Counter]
FROM T3
GROUP BY T3.stud;