提问人:Charles Girouard 提问时间:10/20/2022 更新时间:10/20/2022 访问量:30
如何查看用户是否连续两个月使用我的产品?(SQL格式)
How can I see if a user uses my product two months in a row ? (SQL)
问:
我想知道一个月登录我的产品的用户是否也在下个月登录。
在我的代码部分,您可以找到当月至少登录一次的人的所有 ID 列表,以及相关月份。WITH
我想做第二部分,我将把月份、本月连接的人数以及下个月连接的相同人数作为专栏。
如果我的代码一团糟,我很抱歉,我是初学者,我尽力把它说清楚!
这就是我现在被卡住的地方:
WITH monthly_active_users AS (
SELECT DATE(CONCAT(YYYYMM, '-01')) month, users FROM(
select ym.YYYYMM,
ARRAY(select t.recipient
from (SELECT recipient,
DATE(date) AS messagedate,
FROM messages) t
WHERE FORMAT_DATE("%Y-%m",t.messagedate) = ym.YYYYMM) as userid
FROM (select distinct FORMAT_DATE("%Y-%m", date) as YYYYMM,
from messages
) ym
WHERE ym.YYYYMM <= FORMAT_DATE("%Y-%m",CURRENT_DATE())
ORDER BY ym.YYYYMM DESC)
CROSS JOIN UNNEST(userid) AS users
)
SELECT t.month, COUNT(t.users) mon_count,
-- (
-- SELECT COUNT(users)
-- FROM (SELECT t1.users
-- FROM monthly_active_users t1
-- JOIN monthly_active_users t2
-- on t1.month=DATE_SUB(t2.month, INTERVAL 1 MONTH)
-- GROUP BY t1.month
-- ) t1 WHERE DATE(CONCAT(t1.YYYYMM, '-01')) = DATE_SUB(t.YYYYMM, INTERVAL 1 MONTH)
-- )
FROM monthly_active_users t
GROUP BY month
ORDER by month DESC
最后一部分是测试,别介意哈哈--
感谢您的帮助,祝您有美好的一天!😁
答: 暂无答案
评论
With tbl as (Select date_trunc(date_column,month) as YYYYMM, userid, count(1) as login_per_month from your_datset.your_table group by 1,2)
Select *, date_diff(YYYYMM,lag(YYYYMM) over win_1,month)=1 from tbl window win_1 as (partition by userid order by YYYYMM)