【问题标题】:Applying Formula on a SQL Column在 SQL 列上应用公式
【发布时间】:2015-01-15 04:02:30
【问题描述】:

假设我有一个数值列,我想对这些值应用一个重要的(不是求和或平均)公式。我将如何编写查询以获得所需的值。

例如,假设表 T 有一个名为 number 的列,我想找到该数字倒数的乘积。

T.number
--------
1
2
3
4
5

我要获取值:

1/1 + 1/2 + 1/3 + 1/4 + 1/5

我如何做到这一点?我熟悉分组和聚合,但这里我不需要分组,而是直接应用公式。

【问题讨论】:

    标签: sql formula numeric


    【解决方案1】:

    您的公式是倒数的总和。你会这样做:

    select sum(1.0 / t.number)
    from t;
    

    不幸的是,大多数数据库不支持product 函数。您可以通过获取日志并添加它们然后反转日志来做到这一点。具体功能因数据库而异,但大致如下:

    select exp(sum(log(1.0 / t.number)))
    from t;
    

    【讨论】:

    • 如果我想乘,或者乘后取平方根怎么办?
    • 取决于数据库;最支持sqrt();如果不是,那么pow()power()
    • 我想关键是要找到合适的替代品,就像您在产品中展示的那样。
    【解决方案2】:

    这是更精细的表示...

    DECLARE @TempTbl TABLE
    (
        Num DECIMAL(10,2)
    )
    
    INSERT INTO @TempTbl(Num) VALUES(1)
    INSERT INTO @TempTbl(Num) VALUES(2)
    INSERT INTO @TempTbl(Num) VALUES(3)
    INSERT INTO @TempTbl(Num) VALUES(4)
    INSERT INTO @TempTbl(Num) VALUES(5)
    
    
    SELECT SUM(1.0/Num) FROM @TempTbl
    

    【讨论】:

      猜你喜欢
      • 2023-03-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-28
      • 2019-07-30
      • 2018-07-15
      • 2019-06-02
      • 1970-01-01
      相关资源
      最近更新 更多