MW211 EXIT

devlog
Oracle/掛け算(総積)
2019年06月26日
各行の値を足し算する(総和)のは以下の通り、基本中の基本だ。
┌──────────────────────────────────────┐
│SELECT SUM("数")                                                            │
│    FROM "表";                                                              │
└──────────────────────────────────────┘

じゃ、掛け算にできるか?(総積)
┌──────────────────────────────────────┐
│SELECT ROUND(EXP(SUM(LN("数"))))                                            │
│    FROM "表";                                                              │
└──────────────────────────────────────┘
こんな感じでてきてしまうのである。

自前の表を使って確認してみると確かに「2×3=6」という結果になる
┌──────────────────────────────────────┐
│WITH "表" AS (                                                              │
│         SELECT *                                                           │
│             FROM (                                                         │
│                           SELECT 2 AS "数" FROM DUAL                       │
│                 UNION ALL SELECT 3 AS "数" FROM DUAL                       │
│             )                                                              │
│     )                                                                      │
│SELECT ROUND(EXP(SUM(LN("数"))))                                            │
│    FROM "表";                                                              │
└──────────────────────────────────────┘

やっていることは以下の通り
(1) 「LN()」で一旦、自然対数(log)に変換する
(2) 「SUM()」でそれらを足し算する(総和を求める)
(3) その結果を「EXP()」で元に戻す
(4) 計算の過程で端数(ほんの小さい誤差)が出るので「ROUND()」で四捨五入し調整
分類:Oracle