题解 | #从题干拆解代码,适合新手#

select date,user_id,pass_count
from(
select date,user_id,pass_count,
row_number() over (partition by date order by pass_count desc) as rk
from questions_pass_record) as a
where rk<=2

为什么用 row_number() over (partition by order by )而不是 limit,因为题干“查询每天刷题”涉及分组,所以第一反映一定是窗口函数。

题干“查询每天刷题”对应 partiton by date ;题干“最多”对应 desc ;题干“刷题数”对应 order by pass_count

为什么两次 select ,因为窗口函数为新增列,不属于原表列,相当于你创建一个新表(在原表的情况下右侧新增一列),所以需要 select以下。

PS:我也是新手哈,新手在刷题过程中需要每写一次就执行以下代码,看看结果,你就更加直观你写的代码有什么用了。

全部评论

相关推荐

八极星:有什么不能问的,(/_\),这又不是多珍贵的机会,你有什么可失去的
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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