Честно говоря, у вас должно быть два отдельных столбца для того, что, я думаю, будет датой начала и окончания класса (см. Ответ Impaler), потому что это облегчает дальнейший анализ. Если вы не возражаете видеть одинаковые минимальную и максимальную дату, когда есть только одна дата, вы можете просто сделать
select userid, name, coursename, applicationtype, concat(min(classdate),'-',max(classdate))
from t
group by userid, name, coursename, applicationtype