题解 | #月均完成试卷数不小于3的用户爱作答的类别#

月均完成试卷数不小于3的用户爱作答的类别

https://www.nowcoder.com/practice/b1d13efcfa0c4ecea517afbdb9090845

select tag, COUNT(*) AS tag_cnt
FROM exam_record AS er
JOIN examination_info AS ei using(exam_id)
#要对uid进行限制当月均完成试卷数不小于3的用户
WHERE uid in (
    select uid FROM exam_record 
    WHERE submit_time is NOT NULL #得是完成的
    group by uid
    HAVING COUNT(*) / COUNT(DISTINCT MONTH(submit_time)) >= 3
)        
GROUP BY tag
ORDER BY tag_cnt DESC

题目要求的是用户每个月平均回答次数不小于3的作答类型和及这些用户对应作答类型的回答次数。

既然要有tag 和次数,那最后肯定是按tag进行分组的,次数就是COUNT(*) ,然后再对不小于3的用户这一条件进行限制。

用子查询对uid限制,用户的回答次数,那么子查询里面肯定要对用户进行分组

where uid in(
  select uid FROM exam_record
  WHERE submit_time is NOT NULL #得是完成的
  group by uid
  #进行对次数的筛选
  HAVING COUNT(*) / COUNT(distinct MONTH(submit_time)) >= 3 #总次数除以一共有几个月有回答就是月平均次数
)

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务