subscriptiondate ...

问题描述 投票:1回答:1
You can "unpivot" the table and aggregate with a cumulative sum:

id | subscriptiondate | unsubscriptiondate
---|------------------|--------------------
1  | 2020-02-12       | null
---|------------------|--------------------
2  | 2020-03-20       | 2020-04-01
---|------------------|--------------------
3  | 2020-03-10       | null
---|------------------|--------------------
4  |2020-04-02        | null

我正在使用MySQL对订阅者进行一些数据分析,我想整理出自服务推出以来的每日活跃订阅者。

date       | active_user
-----------|---------------------------
2020-02-12 | 1
-----------|------------------
2020-03-10 | 2
-----------|------------------
2020-03-20 | 3
-----------|------------------
2020-04-02 | 3

我希望得到这样的结果:"一个用户在2020-04-01选择了退出,这就是为什么我们在2020-04-02有3个活跃用户。

一个用户在2020 -04 -01选择了退出,这就是为什么我们有3个活跃用户在2020 -04 -02。

SELECT
    COUNT(distinct is) AS active_user,
    date(subscriptiondate) as day
FROM
    subscriptions
WHERE
        subscriptiondate in (select subscriptiondate  from subscriptions where subscriptiondate <=date(subscriptiondate))
    AND (unsubscriptiondate is NULL or unsubscriptiondate>date(subscriptiondate))
GROUP BY
    day
ORDER BY day ASC*
这是我的SQL脚本,有人能检查并协助我实现我的目标吗?
mysql sql
1个回答
0
投票

我正在使用MySQL对订阅者进行一些数据分析,我想整理出自服务推出以来每天的活跃订阅者。

热门问题
推荐问题
最新问题