题解 | #统计复旦用户8月练题情况#
统计复旦用户8月练题情况
https://www.nowcoder.com/practice/53235096538a456b9220fce120c062b3
SELECT up.device_id,up.university, COUNT(CASE MONTH(qpd.date) WHEN 8 THEN 1 END), COUNT(CASE qpd.result WHEN 'right' THEN 1 END) FROM user_profile AS up LEFT JOIN question_practice_detail AS qpd ON up.device_id = qpd.device_id WHERE up.university = '复旦大学' GROUP BY up.device_id
首先需要将两表联结在一起,随后筛选出学校信息为‘复旦大学’的行,
并按照设备id对数据进行分组,这样子就得到了每个复旦学生的个人统计数据,
接下来只需要使用CASE表达式来计算特定条件的行数即可:
计算月份为8时的答题数量:
COUNT(CASE MONTH(qpd.date) WHEN 8 THEN 1 END)
计算答对的题目数量:
COUNT(CASE qpd.result WHEN 'right' THEN 1 END)