select a.device_id, '复旦大学' as university 
, count(question_id) as question_cnt, sum(yes) as right_question_cnt
from 
(select  device_id , question_id 
,  if(result='right',1,0) yes 
from question_practice_detail where month(date) = 8 
) as b , user_profile as a 
where a.device_id = b.device_id and a.university = '复旦大学'
group by a.device_id ;

1、限制条件:8月,复旦

2、分组条件:每一个用户

3、聚合目标:3.1:总题数 3.2 题目一列中值为正确的行数

限制条件在各个table中where或者on后体现即可,group by后只有deviceid;

求聚合提示点1:select中可以有“列的衍生列“的聚合

select提示2:此题中的复旦大学是混淆思路的,既然明确了都为一个学校,那么直接用“select 一个常量列 列名”体现

困惑点: 为什么question_id 不需要distinct