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 归一化中的含义

Scala类参数化中附加冒号的含义

sql查询中的“ORDER BY meta_value ASC”未正确排序价格

SQL 自动为表中的缺失日期从前一个日期生成缺失的日期和价格