[英]Decreasing of the sum by percentage (subtraction of percentage) SQL
百分比減法
我有一張表,其中有一條記錄。 表看起來像:
cust_code, SUM
1 25
我需要計算這樣的減法。
cust_code, ID, SUM
1 1 25
1 2 23
1 3 21.16
1 4 19.47
1 5 17.91
1 6 16.48
1 7 15.16
1 8 13.95
. . .
. . .
. . .
1 15 7.78
其中記錄 2 中的總和值減去記錄 1 的 8%,記錄 3 中的總和值減去記錄 2 的 8%,記錄 4 中的總和值減去記錄 3 的 8%,等等。 最大 ID將是 15 歲。
它應該是單個查詢,我可以使用任何額外的外部表(例如包含從 0 到 15 的簡單計數器)。
最好的問候,火山
使用遞歸 CTE 很容易做到:
WITH cte AS
(SELECT cust_code, 1 AS id, sum FROM cust
UNION ALL
SELECT cust_code, id + 1, sum * 0.92 FROM cte WHERE id < 15)
SELECT * FROM cte ORDER BY id;
cust_code id sum
---------- ---------- ----------
1 1 25.0
1 2 23.0
1 3 21.16
1 4 19.4672
1 5 17.909824
1 6 16.4770380
1 7 15.1588750
1 8 13.9461650
1 9 12.8304718
1 10 11.8040340
1 11 10.8597113
1 12 9.99093444
1 13 9.19165969
1 14 8.45632691
1 15 7.77982076
您可以將表格與數字表格連接起來並使用一些基本數學:
SELECT cust_code, num, amt * POWER(0.9200, num - 1)
FROM /* (SELECT 1 AS cust_code, 25 AS amt) */ t
CROSS JOIN (VALUES
(1),
(2),
(3),
(4),
(5),
(6),
(7),
(8),
(9),
(10),
(11),
(12),
(13),
(14),
(15)
) AS n(num)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.