我需要使用包含查找值的连接表(实际上更像查找阈值)将线性插值构建到 SQL 查询中。由于我对 SQL 脚本比较陌生,因此我搜索了一个示例代码来为我指明正确的方向,但是我遇到的大多数 SQL 脚本都是用于在日期和时间戳之间进行插值,我无法将这些与我的情况联系起来.
基本上,我有一个主数据表,单列中有许多行十进制值,例如:
Main_Value
0.33
0.12
0.56
0.42
0.1
现在,我需要根据包含非线性阈值和相关线性归一化值的 6 行连接查找表,为上面的每一行生成插值数据点:
Threshold_Level Normalized_Value
0 0
0.15 20
0.45 40
0.60 60
0.85 80
1 100
例如,如果 Main_Value 列中的值为 0.45,则查询将在最近的 Threshold_Level 中(或之间)查找其位置,并根据 Normalized_Value 列中的相邻值进行插值(这将在这个例子)。
对于围绕此构建 SQL 查询的任何见解,我真的很感激,特别是因为很难使用连接表来追踪线性插值的任何 SQL 示例。
有人指出我可以使用某种舍入,所以我在下面提供了一个更详细的表格。我希望 SQL 查询查找位于下表中 Threshold_Min 和 Threshold_Max 值之间的每个 Main_Value(来自上面的第一个表),并返回“Normalized_%”值:
Threshold_Min Threshold_Max Normalized_%
0.00 0.15 0
0.15 0.18 5
0.18 0.22 10
0.22 0.25 15
0.25 0.28 20
0.28 0.32 25
0.32 0.35 30
0.35 0.38 35
0.38 0.42 40
0.42 0.45 45
0.45 0.60 50
0.60 0.63 55
0.63 0.66 60
0.66 0.68 65
0.68 0.71 70
0.71 0.74 75
0.74 0.77 80
0.77 0.79 85
0.79 0.82 90
0.82 0.85 95
0.85 1.00 100
例如,如果 Main_Value 表中的值为 0.52,则它介于 Threshold_Min 0.45 和 Threshold_Max 0.60 之间,因此返回的 Normalized_% 为 50%。问题是 Threshold_Min 和 Max 值不是线性的。谁能指出我如何编写脚本的方向?