С чего бы вам это усложнять?
select count(1), AVG(Student_mark) Student_mark
from Students
group by student_id
Если есть только один показатель student_mark, это также SUM, AVG, MIN и MAX - так что просто продолжайте использовать агрегат!
EDIT
Набор данных, который будет соответствовать вашему требованию, обычно не имеет смысла. Чтобы достичь этого, можно объединить (объединить) два разных результата
select
numRecords,
Student_mark,
case when numRecords = 1 then student_subjectid end # else is implicitly NULL
from
(
select
count(1) AS numRecords,
AVG(Student_mark) Student_mark,
min(student_subjectid) as student_subjectid
from Students
group by student_id
) x