题解 | #牛客每个人最近的登录日期(二)#
牛客每个人最近的登录日期(二)
http://www.nowcoder.com/practice/7cc3c814329546e89e71bb45c805c9ad
这个题目给出的表格信息很容易迷惑人,三表都有相同的字段id,这在入手时很容易想到用id连接三表,但观察之后发现并不是这样,第一个表的id不能作为表连接时的条件,而是用第一个表的user_id,client_id分别对应第二和第三个表的id,连接之后再使用窗口函数运算就比较简单了。代码如下:
select t.un,t.cn,date from
(select u.name un,c.name cn,date,rank()over(partition by user_id order by date desc) rk
from login g
left join user u on g.user_id = u.id
left join client c on g.client_id = c.id) as t
where t.rk = 1
order by t.un
查看6道真题和解析