加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

sql – 随着时间的推移查询DAU / MAU(每日)

发布时间:2020-12-12 07:29:56 所属栏目:MsSql教程 来源:网络整理
导读:我有一个每日会话表,其中包含user_id和date列.我想每天绘制DAU / MAU(每日活跃用户/每月活跃用户).例如: Date MAU DAU DAU/MAU2014-06-01 20,000 5,000 20%2014-06-02 21,000 4,000 19%2014-06-03 20,050 3,050 17%... ... ... ... 计算每日活动量很容易计算
我有一个每日会话表,其中包含user_id和date列.我想每天绘制DAU / MAU(每日活跃用户/每月活跃用户).例如:
Date         MAU      DAU     DAU/MAU
2014-06-01   20,000   5,000   20%
2014-06-02   21,000   4,000   19%
2014-06-03   20,050   3,050   17%
...          ...      ...     ...

计算每日活动量很容易计算,但计算每月活动数,例如登录日期30天的用户数量正在导致问题.如果没有每天的左连接,这是如何实现的?

编辑:我正在使用Postgres.

解决方法

假设您拥有每天的值,您可以使用子查询获取总计数,范围介于:
with dau as (
      select date,count(userid) as dau
      from dailysessions ds
      group by date
     )
select date,dau,sum(dau) over (order by date rows between -29 preceding and current row) as mau
from dau;

不幸的是,我认为您需要不同的用户,而不仅仅是用户数.这使问题变得更加困难,特别是因为Postgres不支持count(distinct)作为窗口函数.

我认为你必须为此做一些自我加入.这是一种方法:

with dau as (
      select date,count(distinct userid) as dau
      from dailysessions ds
      group by date
     )
select date,(select count(distinct user_id)
        from dailysessions ds
        where ds.date between date - 29 * interval '1 day' and date
       ) as mau
from dau;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读