题解 | #牛客每个人最近的登录日期(二)#

牛客每个人最近的登录日期(二)

http://www.nowcoder.com/practice/7cc3c814329546e89e71bb45c805c9ad

知识点

  1. 主要思路就是先按照用户进行分组,日期最大为筛选条件
  2. 使用where(用户id, 日期) in新表进行筛选,新表进行分组选日期最大
  3. 使用窗口函数直接建立新表,按照用户分组把日期进行排序,排序=1就是所求

代码

1.where() in进行筛选 
select u.name as u_n, c.name as c_n, l.date as date
from login as l
join user as u
on l.user_id = u.id
join client as c
on l.client_id = c.id
where(l.user_id, l.date) in(
    select user_id, max(date)
    from login 
    group by user_id)
order by u.name

2.窗口函数进行排序
select u.name as u_n, c.name as c_n, temp.date
from (
         select user_id,
                client_id,
                date,
                row_number() over (partition by user_id order by date desc) as date2
         from login
     ) as temp
join client as c on c.id = temp.client_id
join user u on temp.user_id = u.id
where temp.date2 = 1
order by u.name
全部评论

相关推荐

点赞 评论 收藏
分享
评论
2
收藏
分享

创作者周榜

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