1
select retention
 , Sum(count(retention)) over(order by retention desc) as Num_Users_Retained
  from (select player_id
         , round(init_dtime-create_dtime,0) as retention
      from player
     where Trunc(Create_Dtime) >= To_Date('2012-jan-01','yyyy-mon-dd')
       and init_dtime is not null)
  Group by retention
  order by retention

このクエリは 2 つの列を表示します。最初の列は今年の日 (0 日は 1 月 1 日、259 日は今日 9 月 16 日) であり、2 番目の列は保持です。すべてのユーザーが保持されているため、0 日目は 428,000 で、1 日目は 300K (128,000 人が最初の日以降にログインしなかったため) であり、この数は時間の経過とともに減少し続けています。各日が 0 日目であるパー​​センテージの別の列を表示したいのですが、それで十分ですか、それとも詳細を提供する必要がありますか?

4

1 に答える 1

2
select retention
     , Num_Users_Retained
     , round(Num_Users_Retained/max(Num_Users_Retained) over() * 100, 2) as perc
  from (select retention
             , Sum(count(retention)) over(order by retention desc) as Num_Users_Retained
         from (select player_id
                    , round(init_dtime-create_dtime,0) as retention
                from player
               where Trunc(Create_Dtime) >= To_Date('2012-jan-01','yyyy-mon-dd')
                 and init_dtime is not null
              )
        Group by retention
        order by retention)
 order by retention
于 2012-09-17T05:48:42.107 に答える