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