SQL270热题---小经验加1
求每个用户截止到当前日期的刷题总量
分析:求总量肯定是使用sum( )函数,那么如何求解截止到当前日期的总数量呢(累计值)
错误解法:
使用聚合函数sum()外加group by,单纯的聚合函数计算的是每个用户的当日刷题;
使用窗口函数sum()over(partition by user_id order by date),经计算的是用户每日的累积刷题量;
通过 窗口函数 的 partition by 和 order by 组合,实现了对每个用户按日期动态累计刷量的计算。
代码如下:
select u.name, p.date, sum(p.number)over(partition by user_id order by date) from user u join passing_number p on u.id = p.user_id
order by p.date, u.name ASC
#笔试#