题解 | #某宝店铺连续2天及以上购物的用户及其对应的天数#
某宝店铺连续2天及以上购物的用户及其对应的天数
http://www.nowcoder.com/practice/63ac3be0e4b44cce8dd2619d2236c3bf
SELECT user_id,count(ndt) days_count from (SELECT *,sales_date - DENSE_RANK() OVER(PARTITION BY user_id ORDER BY sales_date) ndt from (SELECT DISTINCT sales_date,user_id FROM sales_tb) t )s GROUP BY user_id,s.ndt HAVING count(ndt) >=2 ORDER BY user_id 我认为需要对user_id,sales_date进行去重处理(存在一个用户一天购买了两次物品这种情况)。然后利用 1 sales_date-row_number() over (partition by user_id order by sales_date asc) 求取差值,若是是连续登录的则差值是一样的。 最后对用户号,差值进行聚合,既可以求出哪些用户的连续登陆天数大于等于2了。