我有一個給定值的表
| id | level | value |
| --- | ------ | ----- |
| 1 | 30000 | 0.05 |
| 2 | 100000 | 0.06 |
| 3 | 120000 | 0.07 |
我想創建一個 postgres sql 查詢來獲得以下邏輯的總和。我將提供一個值(級別)作為查詢(170000)的引數。
(100000- 30000)*0.05 (120000-100000)*0.06 (170000-120000)*0.07
(row2 和 row1 的級別差) * row1 的值 (row3 和 row2 的級別差) * row2 的值 (作為輸入和 row3 的級別差) * row3 的值
uj5u.com熱心網友回復:
您可以使用LEAD函式來獲取下一個級別的值,并根據您的邏輯找到總和,如下所示:
SELECT SUM((nextLevel-level)*value) AS res
FROM
(
SELECT *,
LEAD(LEVEL, 1, 170000) OVER (ORDER BY id) nextLevel
FROM tbl
) T
查看演示。
uj5u.com熱心網友回復:
用于LEAD查看下一行的值。用于COALESCE將最后一個缺失值替換為 170000。
select sum(subtotal) as total
from
(
select
(coalesce(lead(level) over (order by id), 170000) - level) * value as subtotal
from mytable
) subtotals;
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/528919.html
