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

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

https://www.nowcoder.com/practice/e524dc7450234395aa21c75303a42b0a

-- group by date
-- 遍历每一天的所有Login表格里面的记录LL,如果在login里面存在比LL的date更小的记录,表明这条记录是老用户,如果是最小的,则是新用户
-- 我直接用一个CTE查出每个新用户的登录日期不就行了
with tmp as (-- 每个用户的新登录日期
    select user_id, min(date) as fd from login
    group by user_id
)

select l.date, (select count(distinct t.user_id) from tmp t where l.date = t.fd) from login l
group by l.date
order by l.date asc

下面这种写法,让date和count并列的话,count为0的date将不会被显示,所以要用一个子查询

with tmp as (

    select l.date ,count(*) from login l

    where l.date = (select min(date) from login b where l.user_id = b.user_id)

    group by l.date

)

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

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