过去6个月内每周结束时的用户总数

时间:2013-10-11 13:02:42

标签: mysql

我想找到过去26周内每周结束时的用户总数。

例如,

  • 第26周开始有100个用户和20个新用户注册该周,因此第26周结束时有120个
  • 第25周开始时有120位用户和20位新用户注册,因此第25周结束时有140位
  • 第24周开始有140个用户和0个新用户注册,10个删除他们的帐户,因此第24周结束时有130个
  • 第23周开始有130个用户和10个新用户注册该周,因此第24周结束时有140个

等等

我可以找到每周新用户的数量,但是如何让它向我展示总数(即本周新增+本周之前的所有用户)等等,而不必创建26个单独选择?可能吗?

我发现Grouping total active users for each of the previous 8 weeks但它适用于SQL Server,我认为它并不是我所需要的。

我每周都会使用它来获取新内容:

select count(id) as total
    from users
    where join_date>='$sixmonths'
    group by WEEK(join_date)
    order by WEEK(join_date) desc
    limit 26

1 个答案:

答案 0 :(得分:1)

查询:

select count(u.id) as total,
       (SELECT COUNT(u.id)
        FROM users u2
        WHERE WEEK(u2.join_date) <=
              WEEK(u.join_date)
        AND u2.id = u.id) AS Total_count
from users u
where u.join_date>='$sixmonths'
group by WEEK(u.join_date)
order by WEEK(u.join_date) desc
limit 26

让Query在多年之间工作:

select count(u.id) as total,
       (SELECT COUNT(u.id)
        FROM users u2
        WHERE YEARWEEK(u2.join_date) <=
              YEARWEEK(u.join_date)
        AND u2.id = u.id) AS Total_count
from users u
where u.join_date>='$sixmonths'
group by YEARWEEK(u.join_date)
order by YEARWEEK(u.join_date) desc
limit 26
相关问题