场景:我试图创建一个输出矩阵,在其中我在第一列中具有源表的所有列名(字段),然后是该原始字段列的所有Null值的总和。
例如:
Original Table:
Id1 Code Range
aa 33 null
ab 12 001
ac 53 001
ad null null
null 36 002
想要的输出:
Fields #ofnull #ofnonnull
Id1 1 4
Code 1 4
Range 2 3
为此,我有一个代码可检索原始矩阵中所有列的名称和位置,以及一个计算我的null / nonnulls的代码段。
问题:我不知道如何将它们串在一起并通过单个查询获得此输出。我尝试四处搜索,但是大多数答案只是关于计算空值,而不是关于输入查询列列表的过程。
问题:可以这样做吗?还是我必须手动输入查询的每个列名称?
到目前为止的代码:
select
`ordinal_position`,
`column_name`,
from `dev1`.`info`
where `table_schema` = 'dev1'
and `table_name` = 'data1'
order by `ordinal_position`;
select
count(1)
from `dev1`.`data1`
where Id1 is null;
-- where Id1 is not null;
一种方法使用一系列联合:
SELECT
'Id1' AS Fields,
COUNT(CASE WHEN Id1 IS NULL THEN 1 END) AS NoNull,
COUNT(Id1) AS NoNonNull
FROM yourTable
UNION ALL
SELECT 'Code', COUNT(CASE WHEN Code IS NULL THEN 1 END), COUNT(Code)
FROM yourTable
UNION ALL
SELECT 'Range', COUNT(CASE WHEN `Range` IS NULL THEN 1 END), COUNT(`Range`)
FROM yourTable;
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句