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

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

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

select
    tag,
    count(tag) as tag_cnt
from
    (
        select
            b.tag
        from
            exam_record a,
            examination_info b
        where
            a.exam_id = b.exam_id
            and a.uid in (
                select
                    uid
                from
                    (
                        select
                            uid,
                            date_format (start_time, '%Y%m') as start_time_ll,
                            count(id) as ll
                        from
                            exam_record
                        where
                            submit_time is not null
                        group by
                            uid,
                            start_time_ll
                        having
                            ll >= 3
                    ) tc
            )
    ) tcc
group by
    tag
order by
    tag_cnt desc;

题意:

当月均完成试卷数”不小于3的用户们爱作答的类别及作答次数,按次数降序输出

1.先按照用户id和月份进行分组并计算它的完成数量(用提交时间是否为null判断是否完成)

2.按照条件筛选出不小于3的用户数,作为子查询条件来统计后续数量

3.采用group by子句进行分组记数

补充:

在MySQL中,查询的执行顺序通常遵循以下步骤:

FROM子句:首先,MySQL会识别并从指定的表中获取数据。这可能涉及到多个表的JOIN操作。

WHERE子句:接下来,MySQL会根据WHERE条件筛选出满足条件的记录。只有符合条件的行才会进行后续处理。

GROUP BY子句:如果查询包括GROUP BY子句,MySQL会将记录分组,并根据指定的列进行分组操作。

HAVING子句:在GROUP BY之后,HAVING子句会对分组结果进行筛选,类似于WHERE子句的功能。

SELECT子句:接下来,MySQL会根据SELECT子句的指定,选择要返回的列,并计算任何聚合函数。

ORDER BY子句:如果查询包括ORDER BY子句,MySQL会根据指定的字段对结果进行排序。

LIMIT子句:最后,如果查询包括LIMIT子句,MySQL会根据指定的限制返回指定数量的记录。

需要注意的是,这只是一般情况下的查询执行顺序,并不适用于所有查询。一些特殊情况下的查询,例如使用子查询或嵌套查询,可能会涉及到更复杂的执行顺序。此外,MySQL还会根据查询的具体情况进行优化,以提高执行效率。

全部评论

相关推荐

2024-11-20 19:59
已编辑
湖南工业大学 嵌入式工程师
邮小鼠:粤嵌的项目水的要死 来我们学校带过课程实习 项目名字是车机终端 实际上就是写了了个gui 还是老师把代码发给你你改改的那种
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务