我正在尝试计算在28天的窗口时间内有多少不同的用户在使用应用程序。 例如,如果我站在2月28日,我想知道有多少不同的用户登录了该应用程序。 这里的窍门是我只想计算一次。因此,如果用户“ 22”登录28次,我希望他们将其计为1。
此外,用户每个日期只能出现一次。
select b.date, count(DISTINCT a.id)
from table a,
(SELECT distinct(date), date_sub(date,27) dt_start
from table) b
where a.date >= b.dt_start and a.date <= b.fecha
group by b.date
但是它不起作用
我想要的示例,带有2天的滑动窗口:
Input
Day Id
1 A
1 B
2 C
2 A
3 B
3 D
4 D
Result:
Day Count(distinct Id)
1 2
2 3
3 4
4 2
谢谢! :)
答案 0 :(得分:0)
考虑相关子查询:
~/.vim/after/<path>/<plugin_name>
或者,按窗口周期进行的自联接聚合:
select distinct t.date,
(select count(distinct sub.id)
from mytable sub
where sub.date >= date_sub(t.date, 27)
and sub.date <= t.date) as distinct_users_27_days
from mytable t