【问题标题】:Need help in Understanding the below Calculation in Excel在理解以下 Excel 计算方面需要帮助
【发布时间】:2021-09-16 14:11:51
【问题描述】:

我需要了解以下逻辑。我想在 SQL 中实现同样的功能。

=(PRODUCT(1+(K34:K36)))-1

K34、K35、K36 是十进制数 例如:

0.010650756,
0.010277736,
0.009844609

谢谢

【问题讨论】:

  • 建议:Google what PRODUCT does,然后自己尝试。如果您遇到困难,请向我们展示您的尝试,并解释为什么它不起作用。
  • 不确定 1+ 和 -1 的意义。
  • 适用于Oracle,但SQL server的解决方案是相同的(除了Oracle的ln函数在SQL Server中是LOG):Product() aggregate function。同样,快速Google 是您的朋友。
  • 我很清楚产品的作用。但不确定 1 + (K34:K36)
  • 因为它是一个十进制数加 1 后减 1

标签: sql-server excel excel-formula


【解决方案1】:

这是很多猜测工作,但我将这一切都倾倒在 cmets 中。

首先,正如我在 cmets 中所描述的,您发布的公式没有意义。让我们假设你有如下数据(我已经包含了相关的公式):

A B
1 =(PRODUCT(1+(B1:B3)))-1 0.010650756
2 0.010277736
3 0.009844609

此处为 A1 返回的值为0.010650756。这是因为,实际上,1+(B1:B3) 将返回第一个单元格的值 + 1;在这种情况下1 + 0.010650756。单个值的PRODUCT 是值,然后减去1,得到原始数字。

我怀疑你实际上拥有的是{=(PRODUCT(1+(B1:B3)))-1}。请注意,该函数用大括号 ({}) 包裹。这表示一个数组公式,它们的工作方式不同。在这种情况下,1+(B1:B3) 不会返回 1.010650756,而是会将 1 添加到 每个 值,因为它是聚合的。

因此,对于上述情况,=PRODUCT(B1:B3) 将是 0.010650756 * 0.010277736 * 0.009844609然而 {=PRODUCT(1+(B1:B3))} 将是 1.010650756 * 1.010277736 * 1.009844609

正如我在评论中指出的,在 T-SQL 中没有 PRODUCT 的本机函数,但是,我确实找到了 Oracle 的 this answer,它可以很容易地被 SQL Server 采用。所以使用相同的数据:

SELECT EXP(SUM(LOG(1+V.D)))-1 AS Product
FROM (VALUES(0.010650756),(0.010277736),(0.009844609))V(D);

这给了0.0310896771256735

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-11
    • 1970-01-01
    • 2011-02-17
    • 2012-12-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多