如何计算SQL Server中每个值的丢失数据(零,空,空空间)?

发布于 2025-02-09 03:30:08 字数 1402 浏览 2 评论 0原文

我有一个带有两个列Col1和col2的桌子。我正在尝试计算所有代码(Code1,code2,code3,code4 ...)的空空间或零列的百分比 对于下表:

代码col1col2
code1null0
代码2 31
代码2 31
代码2
代码1 nullnull
code141

i想要一个摘要表,如下:

codestocus_count_count_valuessissing_valuessissing_percent
code13266.67
code23133.33

我尝试了下面的代码,但在下面尝试了代码被卡住了

;WITH allcount AS(
SELECT COUNT(*) Total FROM (
SELECT ft.Codes, Description, col1, col2 FROM data1 d1
)A
),baddata AS(
SELECT f1.Code, COUNT(*) BadCount FROM (
SELECT f1.Codes, Description, col1, col2 FROM data1 d1
)B
WHERE (col1 IS NULL AND col2 IS NULL) OR (col1 = ' ' AND col2 = ' ') OR (col1 = '0' OR col2 = 
'0')
GROUP BY f1.ReadCode
)
SELECT ReadCode, Total AS total_count, BadCount as Missing_values,  100*(BadCount/Total) as 
Missing_Percent
FROM allcount, baddata

,我不确定如何将整个过程放在一起,请帮助我

I have a table with two columns col1 and col2. I am trying to compute the percentage of the columns that are null, empty space, or zero for all codes (code1, code2, code3, code4 ...)
For the table below:

codescol1col2
code1NULL0
code231
code231
code2
code1NULLNULL
code141

I want a summary table like below:

codestotal_countMissing_valuesMissing_Percent
code13266.67
code23133.33

I tried the code below but got stuck

;WITH allcount AS(
SELECT COUNT(*) Total FROM (
SELECT ft.Codes, Description, col1, col2 FROM data1 d1
)A
),baddata AS(
SELECT f1.Code, COUNT(*) BadCount FROM (
SELECT f1.Codes, Description, col1, col2 FROM data1 d1
)B
WHERE (col1 IS NULL AND col2 IS NULL) OR (col1 = ' ' AND col2 = ' ') OR (col1 = '0' OR col2 = 
'0')
GROUP BY f1.ReadCode
)
SELECT ReadCode, Total AS total_count, BadCount as Missing_values,  100*(BadCount/Total) as 
Missing_Percent
FROM allcount, baddata

I am not exactly sure how to put the whole thing together, please help me

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

像你 2025-02-16 03:30:08

似乎您只需要一些有条件的聚合:

SELECT Codes,
       COUNT(Codes) AS TotalCount,
       COUNT(CASE WHEN NULLIF(Col1,'') IS NULL OR NULLIF(Col2,'') IS NULL THEN 1 END) AS MissingValues,
       AVG(CASE WHEN NULLIF(Col1,'') IS NULL OR NULLIF(Col2,'') IS NULL THEN 1. ELSE 0. END) AS MissingPercent
FROM dbo.YourTable
GROUP BY Codes;

Seems like you just need some conditional aggregation:

SELECT Codes,
       COUNT(Codes) AS TotalCount,
       COUNT(CASE WHEN NULLIF(Col1,'') IS NULL OR NULLIF(Col2,'') IS NULL THEN 1 END) AS MissingValues,
       AVG(CASE WHEN NULLIF(Col1,'') IS NULL OR NULLIF(Col2,'') IS NULL THEN 1. ELSE 0. END) AS MissingPercent
FROM dbo.YourTable
GROUP BY Codes;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文