with cte_time_cost as (
select uid,
if(score is null,0,score) as new_socre,
if(submit_time is not null,timestampdiff(minute,start_time,submit_time),duration) as cost_time
from user_info
join exam_record using(uid)
join examination_info using(exam_id)
where level = 0 and difficulty='hard'
)
select uid,
round(avg(new_socre)) as avg_score,
round(avg(cost_time),1) as avg_time_took
from user_info
join exam_record using(uid)
join examination_info using(exam_id)
join cte_time_cost using(uid)
group by uid