我想建立一个查询,允许我灵活的线性外推一个数字,从最后一个已知值开始,一直到0岁。该表(见下文)有两列,列年龄和体积。我最后一次知道的量是321.60在11岁的时候,我怎么能把321.60线性外推到0岁呢?另外,我想以允许年龄变化的方式设计查询。例如,在另一个场景中,最后一卷是在27岁。我一直在试验铅函数,结果我可以在10岁时外推体积,但函数不允许我外推到0。我如何设计一个查询,它(a)允许我线性外推到0岁,(b)是灵活的,允许不同的线性外推起点。
SELECT [age],
[volume],
Concat(CASE WHEN volume IS NULL THEN ( Lead(volume, 1, 0) OVER (ORDER BY age) ) / ( age + 1 ) *
age END, volume) AS 'Extrapolate'
FROM tbl_volume
+-----+--------+-------------+
| Age | Volume | Extrapolate |
+-----+--------+-------------+
| 0 | NULL | NULL |
| 1 | NULL | NULL |
| 2 | NULL | NULL |
| 3 | NULL | NULL |
| 4 | NULL | NULL |
| 5 | NULL | NULL |
| 6 | NULL | NULL |
| 7 | NULL | NULL |
| 8 | NULL | NULL |
| 9 | NULL | NULL |
| 10 | NULL | 292.363 |
| 11 | 321.60 | 321.60 |
| 12 | 329.80 | 329.80 |
| 13 | 337.16 | 337.16 |
| 13 | 343.96 | 343.96 |
| 14 | 349.74 | 349.74 |
+-----+--------+-------------+
2条答案
按热度按时间ukdjmx9f1#
如果我假设这个值是
0
在0
,则可以使用简单的算法。这似乎适用于您的情况:这是一把小提琴
enxuqcxy2#
你可以使用一个空窗口函数
over()
为了这种事。举个简单的例子:请注意
avg()
忽略空值。