gpt4 book ai didi

sql - 随时间查询 DAU/MAU(每天)

转载 作者:行者123 更新时间:2023-11-29 11:16:46 26 4
gpt4 key购买 nike

我有一个每日 session 表,其中包含列 user_id 和日期。我想绘制出每天的 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。

最佳答案

假设您有每一天的值,您可以使用子查询和range between 获取总计数:

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) 作为窗口函数。

我认为您必须为此进行某种 self 连接。这是一种方法:

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

关于sql - 随时间查询 DAU/MAU(每天),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24494373/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com