题解 | #牛客每个人最近的登录日期(四)#
牛客每个人最近的登录日期(四)
http://www.nowcoder.com/practice/e524dc7450234395aa21c75303a42b0a
要求
请你写出一个sql语句查询每个日期登录新用户个数,并且查询结果按照日期升序排序
解题思路
本题的核心问题在于什么条件下为新用户,假设我们已经知道了新用户的数据,那么在与login表左连接就可以计算出每日新增的用户情况.
新用户条件
假如我们在写注册接口的时候,是不是需要存入用户的注册时间.假设我们有一张user表正好存了注册时间,那么根据题目要求先对user表注册时间字段分组,再COUNT(user_id) 是不是就可以得到结果?现在只有一个登录记录表,取每个用户的登录最小值就可以视为注册时间,当然了如果有用户表还是得以用户表的注册时间分组统计为妥
新增用户的SQL
SELECT user_id,MIN(date) date_min FROM login GROUP BY user_id
完整SQL
SELECT l1.date,COUNT(l2.user_id) AS new FROM (SELECT date FROM login GROUP BY date) l1 LEFT JOIN (SELECT user_id,MIN(date) date_min FROM login GROUP BY user_id) l2 ON l2.date_min = l1.date GROUP BY l1.date
