Юрий Копнин
Мыслитель
(8099)
4 года назад
with stud as
(
select m.student_id, count(*) from exam_marks m
group by m.student_id
having count(*)>= 20
)
select s.student_id, s.sub_id, s.mark, s.exam_date,
t.surname, t.name,
c.subj_name
from exam_marks s
left join student t on t.student_id = s.student_id
left join subject c on c.subj_id = s.subj_id
where s.student_id in (select stud.student_id from stud)
order by s.student_id
Выведет всех студентов сдавших более 20 предметов и наименование сданых предметов по каждому студенту, если конечно MySQL поддерживает CTE
Если просто вывести количество сданных предметов циферкой по каждому студенту, то:
select m.student_id, t.surname, t.name, count(*) as kolpredmet
from exam_marks m
left join student t on t.student_id = s.student_id
group by m.student_id, t.surname, t.name
having count(*)>= 20
Сам запрос: Напишите запрос, выполняющий вывод количества предметов, по которым экзаменовался каждый студент, сдавший более 20 предметов.
Долго ломаю уже над этим голову. Пока что смог написать только запрос, который возвращает student_id студентов, которые сдали более 20 предметов. А как выбрать повторяющиеся значения subj_id у каждого студента из этого списка ума не приложу.