题解 | #牛客每个人最近的登录日期(四)#
牛客每个人最近的登录日期(四)
http://www.nowcoder.com/practice/e524dc7450234395aa21c75303a42b0a
SELECT t.date, COUNT(DISTINCT t1.user_id) AS new FROM login AS t LEFT JOIN ( SELECT user_id, MIN(date) AS min_date FROM login GROUP BY user_id ) AS t1 ON t.date = t1.min_date GROUP BY t.date ORDER BY t.date
通过子查询生成t1表,查询出每个user_id首次登录日期。
此时的t1表的date只含有每个用户首次登录的日期,因此不一定包含原表login中的所有日期,因此进行左连接。
连接后的表t1在一个日期中会产生很多重复的user_id,因此使用distinct函数去重,并按照日期分组,用count()计算每个组中存在的user_id个数。
