题解 | #牛客每个人最近的登录日期(四)#
牛客每个人最近的登录日期(四)
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
)
查看13道真题和解析