题解 | #某宝店铺连续2天及以上购物的用户及其对应的天数#
某宝店铺连续2天及以上购物的用户及其对应的天数
https://www.nowcoder.com/practice/63ac3be0e4b44cce8dd2619d2236c3bf
# 解法1
with t1 as (
select
user_id,
sales_date,
sales_date - row_number()over(partition by user_id order by sales_date) as date_sub
from sales_tb
)
select
user_id,
count(date_sub) as days_count
from t1
group by user_id,date_sub
having count(sales_date) >= 2;
# 解法2
SELECT user_id,COUNT(1) days_count
FROM (SELECT DISTINCT sales_date,user_id,DENSE_RANK()OVER(PARTITION BY user_id ORDER BY sales_date)rk FROM sales_tb)t1
GROUP BY user_id,DATE_SUB(sales_date,INTERVAL rk DAY) HAVING COUNT(1)>=2;
解法2是对的,需要考虑一个用户在第一天后的某一天内购买两次的问题。
巨人网络成长空间 114人发布