2017-02-22 22 views
0

私はpostgresqlの世界でたくさんの例を見つけましたが、それらはすべてredshiftがサポートしていない関数を使用しているようです。時間の経過によるローリングカウント?

1週間に番号の行を取得するための単純なクエリはありますか?

テーブルにはタイムゾーンのないタイムスタンプの「作成済み」列があります。

私が得ている最も近いです:私を与える

SELECT DISTINCT 
     date_trunc('week', created) AS week 
     ,count(*) OVER (ORDER BY date_trunc('week', created) rows unbounded preceding) AS running_ct 
FROM device_unlock_report 
order by 1 

2015-02-09 00:00:00 320 
2015-02-09 00:00:00 321 
2015-02-09 00:00:00 322 
2015-02-09 00:00:00 323 
2015-02-16 00:00:00 324 
2015-02-16 00:00:00 325 
2015-02-16 00:00:00 326 
2015-02-16 00:00:00 327 
2015-02-16 00:00:00 328 

は、行私の合計はインクリメントごとに時間を与えているようです。ローリング合計

+0

してみてください:[赤方偏移 - 毎月のアクティブユーザーを計算する](http://stackoverflow.com/q/42261489/174777) –

+0

'GROUP BYを使用する必要が '1' 「DISTINCT」の代わりに –

答えて

1

、と同様に

select week,total, sum(total) over (order by week rows unbounded preceding) as rolling_sum from 
     (SELECT 
     date_trunc('week', created) AS week, 
     count(*) total 
     FROM device_unlock_report 
     group by 1) 
group by 1,2 
関連する問題