替换sqlite表中的缺失值

时间:2014-07-22 11:23:31

标签: sqlite

我有一个我在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语句合并而不必手动输入

1 个答案:

答案 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非常重要。)