Du behöver bara en yttre sammanfogning för att inkludera lärare med noll elever.
select t.id, t.name
from teacher t
left join student s on t.id = s.teacher_id
group by t.id
order by count(s.name)
limit 1
Du kan använda denormalisering (en kolumn med det förberäknade antalet elever per lärare), men det är en dålig vana och jag skulle inte rekommendera det om det inte är riktigt oundvikligt.