gpt4 book ai didi

mysql - 用邻居值之间的平均值填充空值,并限制另一列

转载 作者:行者123 更新时间:2023-11-29 16:09:06 25 4
gpt4 key购买 nike

我有一个表,其中列名称为“id”、“time”、“value”当“值”为空时,我希望它是该 id 上“时间”列的最近邻居之间的平均值

我的问题正是此处描述的 select nearest neighbours ,但答案没有解释如何找到对另一列有限制的最近邻居(id 应该相同)

示例:第二行缺少“值”

id       | time  | value
-------------------------
11111 | 1 | 5.0
11111 | 10 |
22222 | 7 | 32.6
33333 | 11 | 15.88
11111 | 15 | 20.0

我希望它是:

id       | time  | value
-------------------------
11111 | 1 | 5.0
11111 | 10 | 12.5*
22222 | 7 | 32.6
33333 | 11 | 15.88
11111 | 15 | 20.0

为 (20.0 + 5.0)/2 = 12.5

在MySQL中如何获取?

最佳答案

假设 time 定义顺序并且是唯一的(为此需要唯一的列和定义顺序的列),一种方法是使用子查询获取顶部(底部)使用 ORDER BYLIMIT 计算具有较小(较大)时间的记录的值

SELECT t1.id,
t1.time,
coalesce(t1.value,
((SELECT t2.value
FROM elbat t2
WHERE t2.id = t1.id
AND t2.time < t1.time
ORDER BY t2.time DESC
LIMIT 1)
+
(SELECT t2.value
FROM elbat t2
WHERE t2.id = t1.id
AND t2.time > t1.time
ORDER BY t2.time ASC
LIMIT 1)
)
/
2) value
FROM elbat t1;

db<>fiddle

但这只能填补一行宽的空白。如果存在更大的间隙,您必须定义这些行的下一个非空邻居是什么。

关于mysql - 用邻居值之间的平均值填充空值,并限制另一列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55434425/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com