首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >每周不同用户的增长

每周不同用户的增长
EN

Stack Overflow用户
提问于 2014-05-01 17:48:17
回答 4查看 969关注 0票数 1

我需要得到一份报告,显示每周不同的用户,以显示每周的用户增长,但我需要它显示累积的不同用户。

因此,如果我有5周的数据,我想显示:不同的用户从0周到1周,不同的用户从0周到2周,不同的用户从0周到3周,不同的用户从0周到4周,不同的用户从0周到5周。

我有整整一年的数据。我知道如何做到这一点的唯一方法就是从字面上查询时间范围,一次调整一周,这是非常乏味的。我只是不知道如何查询从第0周到第1周到第0周到第52周的所有内容。

编辑-我到目前为止拥有的:

代码语言:javascript
复制
select count(distinct user_id) as count
from tracking
where datepart(wk,login_dt_tm) >= 0 and datepart(wk,login_dt_tm) <= 1

然后我取这个号码,记录它,并将它更新到- datepart(wk,login_dt_tm) <= 2,等等,直到我有了所有的星期。这样我就可以每周绘制一张不错的增长图表。

这是乏味的,必须有另一种方法。

UPDATE-我使用了@siyual提供的解决方案,但是更新了它以使用一个表变量,这样我就可以在一个输出中得到所有的结果。

代码语言:javascript
复制
Declare @Week Int = 0
Declare @Totals Table
(
    WeekNum int,
    UserCount int
)
While @Week < 52
Begin
insert into @Totals (WeekNum,UserCount)
        select @Week,count(distinct user_id) as count
        from tracking
        where datepart(wk,login_dt_tm) >= @Week and datepart(wk,login_dt_tm) <= (@Week + 1)

    Set @Week += 1
End
Select * from @Totals
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-05-01 18:07:54

你可以试试这样的方法:

代码语言:javascript
复制
Declare @Week Int = 1

While @Week <= 52
Begin
    select count(distinct user_id) as count
    from tracking
    where datepart(wk,login_dt_tm) >= 0 and datepart(wk,login_dt_tm) <= @Week
    Set @Week += 1
End
票数 1
EN

Stack Overflow用户

发布于 2014-05-01 18:06:42

为什么不像这样:

代码语言:javascript
复制
 select count(distinct user_id) as count, datepartk(wk, login_dt_tm) as week
 from tracking
 group by datepart(wk,login_dt_tm)
 order by week
票数 2
EN

Stack Overflow用户

发布于 2014-05-01 18:53:32

为了记录在案,我将在一条语句中这样做,使用递归的CTE生成从1到52的数字(还可以使用numbers表):

代码语言:javascript
复制
with numbers as (
      select 1 as n
      union all
      select n + 1
      from numbers
      where n < 52
    )
select count(distinct user_id) as count
from tracking t join
     numbers n
     on datepart(wk, login_dt_tm) >= 0 and datepart(wk, login_dt_tm) <= numbers.n;

把它放在一个查询中似乎更容易。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23413376

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档