首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 資料庫基礎

Oracle SQL 實現欄位值累乘(連乘)技巧

     編輯:Oracle 資料庫基礎

Oracle 無內建聚合函數支援連乘,但可利用對數性質轉換:a * b = 10^(log10(a) + log10(b))。

測試資料

CREATE TABLE t (id INT, qty INT);
INSERT INTO t SELECT 1, 2 FROM dual UNION ALL
SELECT 2, 4 FROM dual UNION ALL
SELECT 3, 6 FROM dual UNION ALL
SELECT 4, 5 FROM dual;

連乘查詢

SELECT POWER(10, SUM(LOG(10, qty))) FROM t;

結果

240  -- 2*4*6*5 = 240

適用條件與注意

  • 所有參與運算數值必須 大於 0(對數定義域)。
  • 若含 0 或負數,需先以 CASE 分支處理或改用 PL/SQL 迴圈。
  • 精度極高需求時,可改用 LN/EXP 自然對數基底。

此技巧常用於財務複利、機率連乘、庫存滾動計算等場景,避免寫迴圈大幅簡化 SQL。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved