微信技术群:Day9884125
一、背景
例如有一张数据库表login,它里面记录着用户每次登录的信息,其中有我们关注的三个字段,分别是账号,登录日期,和登录时间。
现在我们要查询这个表里面每个用户最新一次登录系统在login表中的数据。
-- 要求每个用户,所以我们按账号分组,然后再对日期和时间进行降序排序
select userId, loginDate, loninTime, address from(
select userId, loginDate, loninTime, address,
row_number() over(partition by userId order by loginDate desc, loninTime desc) rn from login
) re
where re.rn = 1;
现在我们要查询这个表里面每个用户倒数第二次登录系统在login表中的数据。
-- 要求每个用户,所以我们按账号分组,然后再对日期和时间进行降序排序
--- 说明,如果初次登录,查询结果为空
select userId, loginDate, loninTime, address from(
select userId, loginDate, loninTime, address,
row_number() over(partition by userId order by loginDate desc, loninTime desc) rn from login
) re
where re.rn > 1 and re.rn <= 2;