with t1 as
(
    select 
        a.device_id,
        university,
        question_id,
        result
    from user_profile a
    left join question_practice_detail b on a.device_id = b.device_id
    where university = "复旦大学" and month(date) = 8
)
select distinct
    device_id,
    university,
    count(1) over() question_cnt,
    sum(if(result = "right",1,0)) over() right_question_cnt
from t1

先筛选出来合适的然后去重,直接开窗计算结果了