sql >> データベース >  >> RDS >> Oracle

CONNECT-BYクエリで完全なシリーズ乗算(積)を取得していません

    必要なのは累積乗算です。ただし、集計関数や分析関数などの関数はありません。しかし、数学によれば、乗算は対数を使用した加算 に変更できます。 。

    a * b =  exp(ln(a) + ln(b))
    

    これをSUMで分析関数として使用します。 CONNECTBYコンストラクトを使用する必要はありません。

    SQLフィドル

    recurreten as
    (
    select  YR, YSet, 
          rtnpct rtn_year, 
          round(exp(sum(ln(rtnpct)) over (order by yr, yset rows between unbounded preceding and current row)),2) ccr,
          exp(sum(ln(rtnpct)) over (order by yr, yset rows between unbounded preceding and current row)) ccrfull
    from Z_RETENTIONPCT
    )
    select * from recurreten
    order by yr, yset
    

    結果

    |   YR | YSET | RTN_YEAR |  CCR |        CCRFULL |
    |------|------|----------|------|----------------|
    | 1998 |   20 |  0.84766 | 0.85 |        0.84766 |
    | 1999 |   21 |  0.77941 | 0.66 |   0.6606746806 |
    | 2000 |   22 |  0.78659 | 0.52 | 0.519680097013 |
    | 2001 |   23 |  0.76879 |  0.4 | 0.399524861783 |
    | 2002 |   24 |  0.80952 | 0.32 |  0.32342336611 |
    | 2003 |   25 |  0.76316 | 0.25 | 0.246823776081 |
    | 2004 |   26 |  0.82425 |  0.2 | 0.203444497435 |
    | 2005 |   27 |   0.6992 | 0.14 | 0.142248392606 |
    | 2006 |   28 |  0.77071 | 0.11 | 0.109632258666 |
    | 2007 |   29 |    0.702 | 0.08 | 0.076961845583 |
    



    1. 1つのasp.netアプリケーションで2つの異なるデータベースから2つの異なるOracle依存関係を持つことはできますか?

    2. PostgreSQLのMAX()関数

    3. なぜスクリプトはphpのこのコードでエラーを返すのですか?

    4. SQLServerで正方形を計算する方法