【发布时间】:2017-03-06 07:38:06
【问题描述】:
我有一张发票表格,里面有数百万条数据。在我的表格中,有发票以及客户的第一个和最后一个日期。我的目标是计算发票的每月平均价格。例如我有:
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 的发票从 2017 年 1 月 1 日到 2017 年 1 月 17 日有 16 天(不包括 1 月 17 日)。发票价格为 32 美元。因此一天的平均价格是 32/16 = 2$。第二张发票是1b,从 2017 年 1 月 17 日到 2017 年 2 月 10 日有 24 天。因此平均每天消费 3 美元。并且此发票一月份的部分为 15 天(从 1 月 17 日至 1 月 31 日,包括 1 月 31 日)。总而言之,1 月份的平均消费:16x2$+15x3$=77$。
我认为,我必须使用 varray 来存储月份的数据,并且我必须使用循环来查找 FIRST_DATE 和 LAST_DATE 之间的日期。然而我做不到。还是有其他方式?
【问题讨论】:
-
你是怎么得到 77 美元的。? .什么意思(=16.2+15.3)?你的问题不清楚..
-
抱歉。第一张 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 美元。并且此发票一月份的部分为 15 天(从 1 月 17 日至 1 月 31 日,包括 1 月 31 日)。总而言之,1 月份的平均消费:16.2 美元+15.3 美元=77 美元。现在清楚了吗?如果没有,我可以解释更多.. 谢谢你的帮助