1

次のクエリは、2つの列の出力を提供します。

Day Num_Users_Retained
0   209312
1   22139
2   11457

など、259まで続きます(2012年の毎日)。ただし、0日目に0から259までのnum_users_retainedのすべての値の合計を含めたいのですが、1日目には1〜259のすべての値の合計など、最終日になるまで続きます。元のクエリは次のとおりです。

--Retention since January 1,2012--
select retention as Day,count(retention) 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 1 

助言がありますか?

4

2 に答える 2

2

分析関数を使用する

select
    day,
    num_users_retained,
    sum(num_users_retained) over (order by day) as total_num_users_retained
from churn

http://www.sqlfiddle.com/#!4/24e02/1

このクエリは結果セットに書き込まれます。これを元のクエリに適用できる場合があります。

于 2012-09-17T04:12:38.420 に答える
1
select retention as Day
     , 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
于 2012-09-17T05:02:34.350 に答える