У меня есть 2 таблицы. Таблица1: студент

Таблица2: проблема

Теперь нам нужно выяснить, какой студент решил, сколько проблем, и в выводе нам нужно отобразить student_id, student_name и no_of_prob в порядке убывания no_of_prob.
Если более одного студента имеют равные количество проблем тогда 1. Если no_of_prob самый высокий среди всех остальных, то сохраните их все. 2. Если no_of_prob не самый высокий, не сохраняйте ничего из этого. Например, когда мы группируем по student_id, мы получаем это

Так как student_id 2 и 5 имеют равные no_of_prob, но поскольку их no_of_prob наивысший, мы будем оставьте и student_id 2 и 5. Но student_id 1 и 3 имеют равные no_of_prob, но они не самые высокие, поэтому нам нужно отбросить оба из них. Финальный стол должен быть таким:

Теперь я узнал, как добраться до таблицы № 3 выше, но я не знаю, как Должен ли я оставить 1-й ряд, но убрать его, если он будет повторен? Это мой код ниже
select s.student_id,student_name, count(problem_id) as no_of_prob,
rank() over(order by count(problem_id) desc) as st_rank
from student s inner join problem p on s.student_id = p.student_id
group by s.student_id;