我有一个发票表,并有数百万的数据。在我的表格中,有发票和客户的第一个和最后一个日期。我的目标是计算发票的月平均价格。比如我有:如何计算ORACLE中发票的月平均价格(Varray&循环)
CUSTOMER_ID INVOICE_ID FIRST_DATE LAST_DATE AMOUNT_OF_INVOICE
9876543 1a 1 Jan 2017 17 Jan 2017 32$
9876543 1b 17 Jan 2017 10 Feb 2017 72$
9876543 1c 10 Feb 2017 7 March 2017 100$
9876543 1d 7 March 2017 1 April 2017 25$
9870011 2a 1 Jan 2017 10 Jan 2017 18$
9870011 2b 10 Jan 2017 10 Feb 2017 62$
9870011 2c 10 Feb 2017 1 April 2017 50$
my target is:
CUSTOMER_ID MONTH MONTHLY_AVERAGE_PRICE
9876543 January 2017 77$ (=16x2+15x3)
9876543 February 2017 103$ (=9x3+19x4)
9876543 March 2017 49$ (=6x4+25x1)
9870011 January 2017 62$ (=9x2+22x2)
9870011 February 2017 37$ (=9x2+19x1)
9870011 March 2017 31$ (=31x1)
比如我计算77 $(=16x2+15x3
)由: 第一张发票这INVOICE_ID是1a
有16天,从2017年1月一日至1月17日2017年(不incuding 1月17日)。而发票的价格是32美元。因此一天的平均价格是32/16 = 2 $。第二张发票是1b
,从2017年1月17日至2017年2月10日有24天,因此平均每天消费为3美元。 1月份的发票部分为15天(1月17日至1月31日包括1月31日)。总而言之,1月份平均消费量:16x2 $ + 15x3 $ = 77 $。
在这里,我认为,我必须使用varray来存储数据月,我必须使用循环来找到FIRST_DATE
和LAST_DATE
之间的天数。但是我做不到。还是以其他方式存在?
如何获得77 $。? 。和什么意思(= 16.2 + 15.3)?你的问题不清楚.. – scaisEdge
哦,对不起。 INVOICE_ID为1a的第一张发票为2017年1月1日至2017年1月17日期间的16天(不包括1月17日)。而发票的价格是32美元。因此一天的平均价格是32/16 = 2 $。第二张发票为1b,2017年1月17日至2017年2月10日为24天,因此平均每天消费为3美元。 1月份的发票部分为15天(1月17日至1月31日包括1月31日)。总而言之,1月的平均消费:16.2美元+ 15.3美元= 77美元。现在清楚吗?如果没有,我可以解释更多..谢谢你的帮助 – Abdullah