Аналогично ответу Чарльза, но вы всегда хотите поместить предикат (mark = 50) в предложение WHERE, поэтому вы выполняете фильтрацию перед присоединением.Если это просто домашнее задание, это может не иметь значения, но вы должны помнить об этом, если когда-нибудь попадете на реальные данные.
SELECT std.sid,
std.name,
m.mark,
row_number() over() AS rownum
FROM student std
JOIN marks m
ON std.sid=m.id
WHERE m.mark=50
GROUP BY std.sid, std.name, m.mark