Как получить количество нулевых значений для каждого столбца в таблице - PullRequest
0 голосов
/ 26 августа 2018

У меня есть таблица с 20 столбцами. Как узнать, содержит ли какой-либо из столбцов нулевые значения?А если есть нулевые значения, как их подсчитать.

Ответы [ 4 ]

0 голосов
/ 26 августа 2018

Вы можете видеть это в all_tab_cols, после анализа таблицы или сбора статистики по этой таблице.

select COLUMN_NAME, NUM_NULLS from all_tab_cols where table_name = 'tablename'
0 голосов
/ 26 августа 2018

count(nmuloc) учитывает только те строки, в которых столбец nmuloc IS NOT NULL. count(*) считает все строки, независимо от того, является ли NULL или нет. Таким образом, разница между ними заключается в количестве строк, где nmuloc IS NULL.

SELECT count(*) - count(nmuloc1) count_of_nulls_in_nmuloc1,
       ...
       count(*) - count(nmuloc20) count_of_nulls_in_nmuloc20
       FROM elbat;
0 голосов
/ 26 августа 2018

Использование функций jsonb:

create table my_table(id int primary key, val numeric, str text, day date);
insert into my_table values
(1, 10, 'a', '2018-01-01'),
(2, 20, 'b', null),
(3, 30, null, null),
(4, null, null, null);

select key as column, count(*) as null_values
from my_table t
cross join jsonb_each_text(to_jsonb(t))
where value is null
group by key;

 column | null_values 
--------+-------------
 val    |           1
 str    |           2
 day    |           3
(3 rows)        

Рабочий пример в rextester.

0 голосов
/ 26 августа 2018

У вас может быть SQL-запрос, чтобы получить эту информацию, как показано ниже -

select 'col1Name', count(col1Name) from table where col1Name is null
union
select 'col2Name', count(col2Name) from table where col2Name is null
union ...
select 'col20Name', count(col20Name) from table where col20Name is null

Если это oracle, то вы также можете написать динамический SQL в хранимой процедуре.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...