题解 | #从题干拆解代码,适合新手#
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:我也是新手哈,新手在刷题过程中需要每写一次就执行以下代码,看看结果,你就更加直观你写的代码有什么用了。
查看28道真题和解析