用Teradata中按连接类别分组的值的平均值替换空值



假设我在名为'score'的列中有很多NULL值(缺失值)。我想用一个特定的平均值来替换它们,而不是从列'score'的所有值中替换它们,而是通过我用两个连接的类别的交叉类别构建的组来替换它们:

这种查询适用于按组获取平均值:

SELECT
category1 || ' > ' || category2 AS crosscategory,
ROUND(CAST(AVG(score) AS FLOAT), 2) AS score_avg
FROM DatabaseName.TableName
GROUP BY crosscategory
ORDER BY score_avg;

用一个常量来替换NULL值:

SELECT
NVL(score, 0) AS score_without_missing_values
FROM DatabaseName.TableName

我现在无法解决的问题是如何清晰地用一个常数来替换NULL值,这里的平均值是用AVG和GROUP BY函数计算的。

非常感谢你的帮助!

似乎你想要一个组平均:

SELECT
t.*,
coalesce(score, AVG(score) OVER (PARTITION BY category1, category2)) AS score_avg
FROM DatabaseName.TableName AS t

我删除了ROUND/CAST,因为AVG默认返回FLOAT, ROUND in可能不需要(如果需要,最好转换为DECIMAL)。

最新更新