一段时间内的最大和平均债务天数
Posted
技术标签:
【中文标题】一段时间内的最大和平均债务天数【英文标题】:Max and Avg debt days over a period of time 【发布时间】:2020-10-09 09:49:54 【问题描述】:我有待付款的发票,每张发票都有两个日期,第一个是要求发票付款的日期,另一个是发票付款的日期。我想知道一段时间内的最大债务和平均债务
这是桌子
Id Invoice Amount InvoiceDate InvoicePayment
----------- ------- ----------- ----------- -------------
1 Bill 1 314 2019-01-20 2019-03-01
2 Bill 2 205 2019-01-14 2019-02-18
3 Bill 3 90 2019-02-04 2019-02-06
4 Bill 4 456 2019-01-03 2019-04-27
我想知道二月份的最大债务金额和平均债务
【问题讨论】:
标题中无需SHOUT,请尽量注明是否尝试过写代码,发现具体问题; SO 不是代码编写服务 到目前为止你尝试过什么?似乎是一个家庭作业问题。 您如何定义“债务”?您的示例数据只有发票。 【参考方案1】:您可以使用cross apply
进行反透视,并使用窗口总和来计算每个给定时间点的“运行”债务。剩下的只是过滤和聚合:
select avg(debt) avg_debt, max(debt) max_debt
from (
select x.dt, sum(x.amount) over(order by x.dt) debt
from mytable t
cross apply (values (invoicedate, amount), (invoicepayment, -amount)) as x(dt, amount)
) t
where dt >= '20200201' and dt < '20200301'
【讨论】:
以上是关于一段时间内的最大和平均债务天数的主要内容,如果未能解决你的问题,请参考以下文章
Spark-Core练习题(身高排序,平均年龄,所有姓氏,每月最大天数三人,相同生日的人)