# select
# up.device_id,
# up.university,
# count(*) question_cnt,
# count(if(result = 'right', 1, null)) right_question_cnt
# from
# user_profile as up
# left join question_practice_detail as qpd on (up.device_id = qpd.device_id)
# where
# university = '复旦大学'
# and (
# date between '2021-08-01' and '2021-08-31'
# or date is null
# )
# group by
# up.device_id,
# up.university
SELECT
u.device_id,
u.university,
SUM(IF(result IS NOT NULL, 1, 0)) AS question_cnt,
SUM(IF(result = "right", 1, 0)) AS right_question_cnt
FROM
user_profile u
LEFT JOIN question_practice_detail q ON u.device_id = q.device_id
AND MONTH(q.`date`) = "08"
WHERE
university = "复旦大学"
GROUP BY
u.device_id,
u.university