表演上的某些行算术运算和显示结果
下面是我的表中的内容:表演上的某些行算术运算和显示结果
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是平均一周每个分销商的销售额7天背面29-APR-13)的
即用于查兰分配器平均=(5 + 2 + 23)/ 3
Number_Of_Sales在销售上29-APR-13
完成我尝试使用oracle的wm_concat函数,但它没有按预期工作。
有什么办法可以得到上面的预期结果。
问候, 查兰
这将做到这一点:
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
在程序中使用。
我从来没有见过像这样的查询。 – kattashri 2013-05-02 13:57:09
Hi @Tony,是否有可能在查询中获得average_sales_week和number_of_sales之间的绝对差异 – kattashri 2013-05-03 05:26:29
@kattashri:不确定你的意思 - 你的意思是减去另一个?如果是这样的话,你可以将查询包装在另一个查询中,并将'select distribution,avg_sales_week,number_of_sales,number_of_sales-avg_sales_week与[(上面的查询)]区别开来' – 2013-05-03 09:09:03
select
distributor,
sum(number_of_sales)/
(select count(*) from summary_weekly_sales sws2 where sws2.distributor = distributor and sws2.date_of_activation > '29-APR-13' - 7)
as avg_sales_week,
number_of_sales
FROM summary_weekly_sales
WHERE DATE_OF_ACTIVATION > '29-APR-13' - 7
GROUP BY distributor
也许这应该帮助。
我认为不可能一次完成这个请求,因为如果你有一个像DATE_OF_ACTIVATION = 29-APR-13这样的子句,你不能计算** anil **的平均销售额 – Nagasaki 2013-05-02 12:40:23
,因为分销商平均值是(13 + 4 + 3)/ 3即10 – kattashri 2013-05-02 12:45:22
看看Oracle分析函数 – OldProgrammer 2013-05-02 12:57:40