如何解决计算一行中空值的数量,以除以未知列数
我正在使用SQL Server 14,我需要计算一行中空值的数量以创建一个新列,其中将存储每一行的“完整性百分比”。例如,如果每10列中有9列包含给定行的值,则该行的%为90%。
我知道这可以通过许多Case
表达式来完成,但事实是,这些数据将用于实时仪表板,完成后将不在我的监督下。
我希望每次运行一个函数(或过程?不确定在这种情况下使用的是什么)时都要计算此百分比,并且需要知道表中存在的列数才能计算空值值,然后除以列数即可得出“完整性百分比”。
非常感谢您的帮助!
谢谢
解决方法
一种方法使用cross apply
取消将列旋转到行并计算非空值的比率。
假设您的表具有col1
至col4
列,您可以将其写为:
select t.*,x.*
from mytable t
cross apply (
select avg(case when col is not null then 1.0 else 0 end) completeness_ratio
from (values (col1),(col2),(col3),(col4)) x(col)
) x
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。