SQL 中的价格年化
Posted
技术标签:
【中文标题】SQL 中的价格年化【英文标题】:Price Annualizing in SQL 【发布时间】:2016-08-11 14:12:19 【问题描述】:您好,我正在使用以下计算来年化价格字段。
(price * 365 / close _date - begin_date ) * 9.35/100
当涉及闰年时,此计算有效
例如当价格 = 6000 时
开始日期 = 2016 年 1 月 1 日
截止日期 = 2017 年 12 月 31 日
所以年化值为 280.50
但是当我将开始日期和结束日期更改为 2017 年 1 月 1 日和 2018 年 12 月 31 日时,值更改为 280.88
如何在这两种情况下将值设为 280.50?是否可以进行任何平均,以便在涉及任何日期时该值完美呈现?
【问题讨论】:
添加示例表数据,以及预期的结果。向我们展示整个查询(可能是简化的)。 【参考方案1】:2016 年是闰年.. 366 天。而 2017 年有 365 天
你的 Denom 从 730 天滑到 729 天
【讨论】:
【参考方案2】:您可能想使用months_between()
:
select price * 12 / months_between(close _date, begin_date ) * 9.35/100
您可能需要将边界调整一天才能适用于您的日期:
select price * 12 / months_between(close _date + 1, begin_date) * 9.35/100
注意:months_between()
有点棘手,因为它返回小数月份。但是,如果差值总是到月初,那么您是安全的。
【讨论】:
OP 似乎每天都想要一个金额,所以这不太可能有帮助 - 从 1 月 1 日到 1 月 31 日,他想要的金额与从 4 月 1 日到 4 月 30 日不同。(实际上我碰巧为了知道这就是他正在寻找的东西,他在 OTN 上发布了同样的内容。)以上是关于SQL 中的价格年化的主要内容,如果未能解决你的问题,请参考以下文章
如何在不选择模式配置参数的情况下使用 mongoose 在 MongoDB 模式实例化中的关联数组/对象中执行 foreach?
preProc = c("center", "scale") 在插入符号包 (R) 和 min-max 归一化中的含义