2017-05-31 12 views
0

私は過去30日間に渡ってクエリを取得していますが、合計収益が合計されますが、過去30日間の合計に加えて過去7日間の平均を加算することも必要です。私はこのようなものを求めています:最後の7日間に限定されたパーティションの平均

select 
    country 
    , avg(revenue) over (partition by country range between current_date - 7 and current_date) avg_revenue_last_7_days 
    , sum(revenue) total_revenue_30_days 
from table 
group by 1,2 

集計の基準よりも少ない日数で平均を得ることはできますか?

サブクエリを避けたいのは、クエリがすでにかなり複雑なためです。

+0

?また、無関係の製品にはタグを付けないでください。 – Strawberry

+0

サンプルデータと望ましい結果を提供する必要があります。 。 。少なくともあなたのデータレイアウト。 –

答えて

1

あなただけの条件付き集約、このためにウィンドウ関数を必要としない:どのように2 BYあなたGROUPでき

select country, 
     avg(case when datecol between current_date - 7 and current_date 
       then revenue 
      end) as avg_revenue_last_7_days, 
     sum(case when datecol between current_date - 30 and current_date 
       then revenue 
      end) as total_revenue_30_days 
from table 
group by country; 
+0

...そして、 'WHERE datecol> = CURRENT_DATE-30'を追加して、行を最小化してGROUP BY ... – marcothesane

関連する問題