В группе по, вы должны поместить ALL неагрегированные столбцы:
select s.full_name,
s.student_id,
count(a.id) as total_present,
count(CASE WHEN TIMEDIFF(min(a.punch_in_time),'10:00:00') THEN '1' END) 'late'
from student s, attendance_record a
where a.student_id=s.student_id
and a.punch_in_date BETWEEN '2018-12-26' and '2018-12-26'
group by s.student_id , s.full_name
Примечание: лучше объединить таблицу с "LEFT JOIN" или "INNERПРИСОЕДИНЯЙТЕСЬ ", потому что это более читабельно
select s.full_name,
s.student_id,
count(a.id) as total_present,
count(CASE WHEN TIMEDIFF(min(a.punch_in_time),'10:00:00') THEN '1' END) 'late'
from student s
INNER JOIN attendance_record a ON a.student_id=s.student_id
where
a.punch_in_date BETWEEN '2018-12-26' and '2018-12-26'
group by s.student_id , s.full_name