SQLite 按每个组的平均值估算缺失值

SQLite impute missing values by mean for every group

我有一个 SQLite table 如下所示。

students grades
Nick 34
Nick 42
Nick 86
Nick Null
John 38
John 12
John 74
John Null
Colin 87
Colin 23
Colin 46
Colin 42

我想做的是用每个学生成绩的平均值来估算 Null 值。 例如,Nick 的缺失值为 54,John 的缺失值为 41.3。 我如何在 SQL 代码中执行此操作?我正在使用 SQLite.

在 UPDATE 语句中使用相关子查询:

UPDATE tablename AS t1
SET grades = (
  SELECT ROUND(AVG(t2.grades), 1) 
  FROM tablename AS t2 
  WHERE t2.students = t1.students
)
WHERE t1.grades IS NULL;

参见demo