簡體   English   中英

按百分比減少總和(減去百分比) SQL

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM