# 现在运营想要了解复旦大学的每个用户在8月份练习的总题目数和回答正确的题目数情况,请取出相应明细数据,对于在8月份没有练习过的用户,答题数结果返回0.


SELECT u.device_id,  -- 用户设备 ID
       u.university,  -- 用户所在大学
       COALESCE(SUM(q.result IS NOT NULL), 0) AS question_cnt,  -- 总题目数,如果没有练习过则为 0
       COALESCE(SUM(CASE WHEN q.result = 'right' THEN 1 ELSE 0 END), 0) AS right_question_cnt  -- 回答正确的题目数,如果没有练习过则为 0
FROM user_profile u  -- 从用户信息表中选取数据
LEFT JOIN (
    SELECT device_id, result, date  -- 从问卷练习表单中选取设备 ID、结果和日期
    FROM question_practice_detail
    WHERE MONTH(date) = 8  -- 筛选出日期为 8 月份的记录
) q ON u.device_id = q.device_id  -- 以设备 ID 进行左连接
WHERE u.university = '复旦大学'  -- 筛选出复旦大学的用户
GROUP BY u.device_id, u.university;  -- 按照设备 ID 和大学进行分组