select uid, round(avg(score), 0) as avg_score, round(avg((case when submit_time IS NULL then duration else TIMESTAMPDIFF(MINUTE, start_time, submit_time) end)), 1) as avg_time_took from ( select a.uid, a.exam_id, b.difficulty, b.duration, a.start_time, a.submit_time, a.score from ( select uid, exam_id, start_time, submit_time, (case when score IS NULL then 0 else score end) as score from exam_record where uid in ( select uid from user_info where level = 0 ) ) as a left join examination_info as b on a.exam_id = b.exam_id where b.difficulty = 'hard' ) as t1 group by uid;