题解 | 统计复旦用户8月练题情况

select
    u.device_id,
    university,
    count(q.result) as question_cnt,
    sum(case when q.result = 'right' then 1 else 0 end) as right_question_cnt
from
    user_profile as u
    left join question_practice_detail as q on u.device_id = q.device_id
    and q.date like '2021-08%'
where
    university = '复旦大学'
group by
    u.device_id

  • CASE WHEN q.result = 'right' THEN 1 ELSE 0 END:是一个条件表达式,逐行检查 q.result 是否等于 'right'。如果 q.result = 'right',则返回 1。如果 q.result 不等于 'right' 或为 NULL,则返回 0。
  • SUM(...):SUM 是一个聚合函数,用于对一组值进行累加。在这里,它会对 CASE 表达式的结果进行累加。
全部评论

相关推荐

青春运维少年不会梦到...:实习大王
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务