1

我正在尝试查找过去 26 周每周结束时的用户总数。

例如,

  • 第 26 周开始时有 100 名用户和 20 名新用户在该周注册,所以第 26 周结束时有 120
  • 第 25 周开始时有 120 名用户和 20 名新用户在该周注册,所以第 25 周结束时有 140
  • 第 24 周开始时有 140 个用户和 0 个新用户注册,10 人删除了他们的帐户,所以第 24 周结束时有 130 个
  • 第 23 周开始时有 130 名用户和 10 名新用户注册,所以第 24 周结束时有 140

等等

我可以找到每周新用户的数量,但我怎样才能让它显示总数(即本周新用户 + 本周之前的所有用户)等等,而无需创建 26 个单独的选择?可能吗?

我发现对过去 8 周中的每一周的活跃用户总数进行分组,但它适用于 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
4

1 回答 1

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

查询在年份之间工作:

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
于 2013-10-11T13:11:51.880 回答