sql - SQL - 具有平均值的数据输入
问题描述
我目前正在尝试使用 SQL 语句输入数据(我对 SQL 不是很熟悉)。我有一个带有空值的数据集,我试图用整个变量的平均值替换空值。我正在尝试这样的声明(我正在使用 MS SQL):
SELECT x1,
CASE
WHEN x1 IS NULL THEN AVG(x1)
ELSE x1
END AS x1
FROM dbo.data
它返回一个错误:
列 'dbo.data.x1' 在选择列表中无效,因为它不包含在聚合函数或 GROUP BY 子句中。
当我将 AVG 值更改为例如 1 - 它正在工作并且当我添加 group by 时,它只显示没有空值的值。
这可能是一个愚蠢的问题,但可以在这里做这样的输入吗?正如我提到的,我完全是业余爱好者,需要一些帮助和提示!
谢谢,
汤姆
解决方案
我建议使用coalesce()
而不是case
. 它是更多的锥体:
select d.*,
coalesce(x1, avg(x1) over ()) as imputed_x1
from data d;
推荐阅读
- angular - 如何以角度创建动态路由(URL字符串)?
- c++ - 未定义对 `FIFORequestChannel::FIFORequestChannel 的引用
- php - 在php和mysql中生成3000个不同的14位数字
- java - 如何将 BufferedImage 转换为位图?
- vba - 创建搜索文件夹并访问回复收件人
- swift - Cocoa 安装:终端在获取 POD 文件时显示“是目录”错误
- c - 堆上的字符串指针与调用函数的堆栈
- arrays - 将元组类型转换为新类型
- julia - 在 Julia 中使用变量作为指数时遇到问题
- flutter - 使用滑块按钮创建分段控件小部件 - Flutter