You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

理解Excel PRODUCT函数计算逻辑及如何在SQL中实现同等功能

Excel公式逻辑讲解

你提到的=(PRODUCT(1+(K34:K36)))-1是典型的多期累计收益率计算公式,逻辑拆解如下:

  • 第一步:对K34、K35、K36三个单元格的数值分别执行+1操作,本质是把单期收益率转换成当期的本息和系数
  • 第二步:用Excel内置的PRODUCT函数计算所有本息和系数的乘积,得到多期累计的本息和系数
  • 第三步:乘积结果减1,最终得到多期累计收益率

用你给出的示例值计算:

三个单期收益率为0.010650756、0.010277736、0.009844609
加1后得到:1.010650756、1.010277736、1.009844609
三数乘积≈1.03109,减1后得到累计收益率≈3.11%

对应SQL实现方法

不同数据库的实现方式分为两类,核心是实现多行数值的乘积聚合逻辑:

有内置乘积聚合函数的数据库(PostgreSQL、Oracle等)

直接调用内置的乘积聚合函数即可,语法示例如下:

-- 假设你的表存储了单期收益率,字段名为rate,筛选对应3行数据的条件自行补充
SELECT PROD(1 + rate) - 1 AS cumulative_return
FROM your_table
WHERE -- 补充筛选对应行的条件,例如id IN (34,35,36)
-- 如果需要按维度分组计算,加GROUP BY子句即可

注:Oracle中内置函数名为PRODUCT,替换上述语句中的PROD即可。

无内置乘积聚合函数的数据库(MySQL、SQL Server等)

通过对数+指数的数学转换实现乘积聚合:乘积的自然对数等于各因子自然对数的和,再对求和结果取指数即可还原乘积结果。
语法示例如下:

SELECT EXP(SUM(LN(1 + rate))) - 1 AS cumulative_return
FROM your_table
WHERE -- 补充筛选对应行的条件
-- 需要分组同样加GROUP BY子句

注意:该方案要求所有1+rate的结果必须大于0,你的场景下都是收益率数据,正常不会出现小于等于-1的收益率,因此可直接使用。

内容的提问来源于stack exchange,提问作者Pavithra

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 23:06:02