一段时间内的最大和平均债务天数

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练习题(身高排序,平均年龄,所有姓氏,每月最大天数三人,相同生日的人)

R语言计算时间窗口内的统计值(滑动平均滑动最大值滑动中位数滑动计数滑动总和等)实战

813. 最大平均值和的分组(Python)

LeetCode 0813. 最大平均值和的分组

LeetCode 0813. 最大平均值和的分组

所有可能和的最小值、最大值、平均值和中值 (Ruby)