京公网安备 11010802034615号
经营许可证编号:京B2-20210330
sql中插值法完成缺失数据的填充
从Excel中导入了一批数据到Sqlserver,但因为原始数据不全,中间有些数据漏掉了。比如下面这种情况。ID为2的so数据为0。ID为3,4的co1数据缺失了,暂时用0代替。
ID so co1
1 0.1 0.1
2 0 0.2
3 0.2 0
4 0.25 0
5 0.2 0.4
使用差值法将这些缺失的数据补齐。插值计算方法如下:(也可以不使用这两个步骤,只要最后的结果一致就行)
步骤一:计算缺失值上下的已知值间的斜率:
k = (b2 - b1)/(n + 1) n 为缺失数据的个数
步骤二:计算对应的缺失值
a(i) = b1 + k * i
经过处理后,得到的数据是这样的:
ID so co1
1 0.1 0.1
2 0.15 0.2
3 0.2 0.27
4 0.25 0.33
5 0.2 0.4
现在希望在sqlserver中写一个存储过程,自动完成上述过程。
so,co1为原始表的字段,这样的字段一共有七八个。所以一次可以只考虑一个字段的缺失值填充。
b2 b1是缺失数据前后的正常数据。比如
ID co1
1 0.1
2 0.2
3 0
4 0
5 0.4
这里b2为ID=5,b1为ID=2的数据。b2和b1需要在sql过程中去判断。
k是插值的斜率
i为第几个缺失数据。比如这里在填充ID为3,co1的数据时,i=1。填充ID为4,co1的数据时,i=2。
---------
SQL 语句
方法通过排序的方式求得的@NUM1和@NUM2,但缺失数据多的时候,不再适用了啊。
IF OBJECT_ID('TB') IS NOT NULL DROP TABLE TB
IF OBJECT_ID('FUN_SO') IS NOT NULL DROP FUNCTION FUN_SO
IF OBJECT_ID('FUN_CO1') IS NOT NULL DROP FUNCTION FUN_CO1
GO
CREATE TABLE TB(
ID INT,
SO NUMERIC(19,2),
CO1 NUMERIC(19,2)
)
INSERT INTO TB
SELECT 1, 0.1, 0.1 union all
SELECT 2, 0, 0.2 union all
SELECT 3, 0.2, 0 union all
SELECT 4, 0, 0 union all
SELECT 5, 0, 0.4 union all
SELECT 6, 0.1, 0.5
GO
CREATE FUNCTION FUN_SO(@ID INT)
RETURNS NUMERIC(19,2)
AS
BEGIN
DECLARE @NUM1 NUMERIC(19,2),@ID1 INT,@NUM2 NUMERIC(19,2),@ID2 INT
SELECT TOP 1 @ID1=ID , @NUM1=SO FROM TB WHERE ID<=@ID AND SO<>0 ORDER BY ID DESC
SELECT TOP 1 @ID2=ID , @NUM2=SO FROM TB WHERE ID>=@ID AND SO<>0 ORDER BY ID ASC
IF @ID2<>@ID1
RETURN @NUM1+(((@NUM2-@NUM1)/(@ID2-@ID1))*(@ID-@ID1))
RETURN @NUM1
END
GO
CREATE FUNCTION FUN_CO1(@ID INT)
RETURNS NUMERIC(19,2)
AS
BEGIN
DECLARE @NUM1 NUMERIC(19,2),@ID1 INT,@NUM2 NUMERIC(19,2),@ID2 INT
SELECT TOP 1 @ID1=ID , @NUM1=CO1 FROM TB WHERE ID<=@ID AND CO1<>0 ORDER BY ID DESC
SELECT TOP 1 @ID2=ID , @NUM2=CO1 FROM TB WHERE ID>=@ID AND CO1<>0 ORDER BY ID ASC
IF @ID2<>@ID1
RETURN @NUM1+(((@NUM2-@NUM1)/(@ID2-@ID1))*(@ID-@ID1))
RETURN @NUM1
END
GO
SELECT ID,DBO.FUN_SO(ID),DBO.FUN_CO1(ID) FROM TB
/*
10.100.10
20.150.20
30.200.27
40.170.33
50.130.40
60.100.50
*/
数据分析咨询请扫描二维码
若不方便扫码,搜微信号:CDAshujufenxi
“大学生必备证书有哪些”最容易被答成一张越长越好的清单。但校招筛选的真实逻辑是:证书要对应你投的岗位任务,并且在校期间确 ...
2026-11-05大学期间能报的证书,先别急着看“含金量榜单”。更实用的第一步是问:我现在这个身份、这个学历,符合报考条件吗? 很多证书宣 ...
2026-11-05大学期间能考的证书很多,但真正需要先回答的是两个问题:当前有没有报考资格,以及这张证书对应什么岗位任务。 前者决定你能不 ...
2026-11-05先把结论说清楚:真正“只有在校大学生能考、毕业就彻底没资格”的证书数量不多,主要集中在语言类考试的部分专项、面向高校学生 ...
2026-11-05上班族问“考什么证书有用”,真正要解决的不是找一张“最值钱”的证,而是判断哪张证能嵌进你现有的岗位任务。同样一张证书,做 ...
2026-11-05职称证书不是统一的考试项目。同样“考职称”,经济、会计、统计、审计、软考走全国统一考试,工程、教师、卫生等系列多数走评审 ...
2026-11-0533岁选证书,最怕两件事:一是被“适合女生”的清单带着走,考完发现岗位用不上;二是投入大半年,报名时才发现学历、专业或工作 ...
2026-11-05“女生容易考的证书”这个问题,真正难的不是找一份名单,而是判断“容易”到底指什么。报名条件宽松、考试通过率高、拿证后能找 ...
2026-11-05“女生适合考什么证书”这类搜索,背后往往是同一个困惑:网上榜单太多,口径却说不清楚。有人把培训证书和职业资格混在一起排, ...
2026-11-05先把结论说清楚:没有一张证书对所有人都“又好考又实用”。同一个证,对在校生可能报名门槛都过不了,对有三年工作经验的人却只 ...
2026-11-05“考证书有哪些”这个问题,如果只想要一份名单,网上能搜到成百上千个。但真正有用的答案不是“有哪些”,而是“它们分别是什么 ...
2026-11-05“考什么证好一点”这句话,十个人问可能有十个意思。有人想问哪个证容易过,有人想知道哪个证找工作管用,还有人关心哪个证长期 ...
2026-11-05“考哪些证书最吃香”很难用一张榜单回答。同一张证书,在有的岗位是硬门槛,在另一些岗位只是加分项;对在校生和在职者的价值也 ...
2026-11-05家庭主妇能考的证书不少,但真正值得花时间的,不是“哪个证热门”,而是先确认你当前能不能报,再按每周可投入时间和未来出口缩 ...
2026-11-05“国家认证的职业技能证书”并不是某一本证书的正式名称,而是一句被大量使用的宣传口径。它可能指向人社部门的国家职业资格、备 ...
2026-11-05工程领域的证书名目确实多,但乱的不是证书本身,而是很多人把不同制度属性的证书放在一个篮子里比较。有人拿培训结业证去对标注 ...
2026-11-05大专学历不是考证的天花板,但确实存在一批证书对学历、专业或工作年限有硬性要求。与其先问“哪个证最值钱”,不如先做一道筛选 ...
2026-11-05大专学历想找“含金量高”的证书,最容易踩的坑不是选错方向,而是没看清报考条件就投入几个月时间。直接回答:大专可以报考的高 ...
2026-11-05大学期间能考的证书不少,但真正值得先解决的问题不是“有哪些”,而是“哪些我现在就能报”。同样一个证书名称,有的在校即可报 ...
2026-11-05大学要考哪些证,没有一份适合所有人的统一清单。更实用的做法是先按证书性质分类,再按目标方向筛选,最后核对在校身份能否报考 ...
2026-11-05