我有一個發票表,並有數百萬的數據。在我的表格中,有發票和客戶的第一個和最後一個日期。我的目標是計算髮票的月平均價格。比如我有:如何計算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