我有一个我在sqlite中创建的表,如下所示:
Age Height
12 186
175
169
13
15 171
我想用每个列的平均值替换每个列中的缺失值。我使用了更新功能,但表中似乎没有任何可见的更新。假设上面的表名为test,我已经这样做了
UPDATE test SET Age=13.3 WHERE Age IS NULL;
UPDATE test SET Height=175.25 WHERE Height IS NULL;
另外,我想知道如何自动将均值与select语句合并而不必手动输入
答案 0 :(得分:1)
显然,缺少的值不是NULL,而是一些其他值,可能是空字符串。 你应该解决这个问题:
UPDATE test SET Age = NULL WHERE Age = '';
UPDATE test SET Height = NULL WHERE Height = '';
要计算一组值的平均值,请使用AVG聚合函数:
UPDATE test SET Age = (SELECT AVG(Age) FROM test) WHERE Age IS NULL;
UPDATE test SET Height = (SELECT AVG(Height) FROM test) WHERE Height IS NULL;
(AVG将忽略NULL值,但将其他无效值计为零值,因此缺少的条目实际上为NULL非常重要。)