0

以下は私のテーブルの内容です:

select * from summary_weekly_sales;

DISTRIBUTOR    DATE_OF_ACTIVATION  NUMBER_OF_SALES
-------------- ------------------  ---------------
charan          25-APR-13              23
charan          26-APR-13               2
charan          28-APR-13               5
charan          29-APR-13              50
anil            25-APR-13              13
anil            26-APR-13               4
anil            28-APR-13               5
anil            29-APR-13              30

ireport では、DATE_OF_ACTIVATION が入力パラメーターです (ただし、ここでは date_of_activation を 29-APR-13 としています)。出力を次のように表示します。

DISTRIBUTOR    avg_sales_week   NUMBER_OF_SALES
-------------- ---------------  ---------------
charan          10              50

anil            7.33            30

どこ、

avg_sales_weekは、ディストリビューターごとの平均週売上です (つまり、2013 年 4 月 29 日の 7 日前)。

つまり、charanディストリビューターの平均 = (5+2+23)/3

Number_Of_Salesは、2013 年 4 月 29 日に行われた売上です。

オラクルのwm_concat関数を試してみましたが、期待どおりに動作しません。

上記の期待される結果を得る方法はありますか。

よろしく、チャラン

4

2 に答える 2

2

これはそれを行います:

select distributor
,      sum(case when date_of_activation < date '2013-04-29'
           then number_of_sales end)  
       / count(distinct case when date_of_activation < date '2013-04-29' 
           then date_of_activation end) as avg_sales_week   
,      sum(case when date_of_activation=date '2013-04-29' 
           then number_of_sales end) number_of_sales
from   summary_weekly_sales
where  date_of_activation between date '2013-04-29' - 7 and date '2013-04-29'
group by distributor;

DISTRIBUTO AVG_SALES_WEEK NUMBER_OF_SALES
---------- -------------- ---------------
anil           7.33333333              30
charan                 10              50

たとえば、プロシージャで使用するためdate '2013-04-29'に、パラメーター名に置き換えるだけです。p_date

于 2013-05-02T13:20:30.473 に答える