【发布时间】:2021-12-31 12:00:02
【问题描述】:
有两张桌子。 表A具有以下结构
| ID | Flag | Name |
|---|---|---|
| 1X | 1 | Y |
| 2Y | 0 | Null |
| 3Z | 1 | Null |
| 4A | 1 | Y |
表 B 具有以下结构
| B_ID | City | State |
|---|---|---|
| 1X | Y | Null |
| 2Y | Null | Null |
| 3Z | Null | Y |
| 4A | Y | Y |
我想获取所有 ID 的计数以及在任何列(名称、城市、州)中具有 Null 的 ID 的计数,例如,从上面的表格中,只有 ID 4A 的所有值都不为空两个表中的三列,所以输出应该是这样的
| Total_Count | Ids having null | Percentage missing |
|---|---|---|
| 4 | 3 | 0.75% |
Total_count 为 4,因为共有四个 ID,具有 NULL 的 ID 为 3,因为在三列(即名称、城市、州)中的任何一列(即名称、城市、州)中有 3 个 ID 为空,而缺少百分比只是 ID 具有null / Total_Count。
我尝试使用以下几行的查询
select (count/total) * 100 pct, count,total
from (select sum(count) count
from(select count(*) count from tableA T1
where T1.name is null
union all
select count(*) count from tableA T1
join tableB T2 on T1.ID = T2.B_ID
where T2.city is null
union all
select count(*) count from tableA T1
join tableB T2 on T1.ID = T2.B_ID
where T2.state is null)),
select count(ID) total from tableA);
但是查询没有返回所需的输出,您能建议我一个更好的方法吗? 谢谢你
【问题讨论】: