MySQL创建具有空值和非空值的表

DGMS89

场景:我试图创建一个输出矩阵,在其中我在第一列中具有源表的所有列名(字段),然后是该原始字段列的所有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;
蒂姆·比格莱森(Tim Biegeleisen)

一种方法使用一系列联合:

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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章