【问题标题】:How to multiply all values in one column to make one number?如何将一列中的所有值相乘得到一个数字?
【发布时间】:2021-01-03 17:15:07
【问题描述】:

在 SQL Server 中,我试图将表中计算列的所有值按日期降序相乘,以产生一个数字。

这样我就可以计算出一个可以应用于不同表/值的因子,即将“价格率”列中的每个值相乘以产生一个“价格因子”

到目前为止,我一直在尝试使用 exp AND log 函数,但没有成功。

【问题讨论】:

  • 欢迎来到 SO!您提到到目前为止,我一直在尝试使用 exp AND log 函数,但没有成功。,但实际展示这些尝试会更有帮助,这样我们就可以使用您现有的代码。您可以编辑您的帖子以包含您的尝试。谢谢。

标签: sql sql-server tsql group-by sum


【解决方案1】:

在 SQL 中没有聚合“乘积”函数的情况下,一种方法使用算术:您可以将每个值的对数相加,然后取结果的指数。

select exp(sum(ln(price_rate))) as price_factor
from mytable

为了使其正常工作,price_rate 的所有值都必须大于 0

【讨论】:

    【解决方案2】:

    SQL 中没有 PRODUCT() 或 MULTIPLY() 聚合函数,因为它很可能溢出。但是,正如您尝试做的那样,这可以使用 LOG 和 EXP 来完成,

    SELECT EXP(SUM(LOG(price_rate))) as price_factor
    FROM yourTable
    

    请注意,像这样对整数值使用 LOG/EXP 通常不会产生精确的整数结果。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-20
      • 1970-01-01
      • 1970-01-01
      • 2013-12-31
      • 1970-01-01
      • 2022-01-07
      相关资源
      最近更新 更多