Подсчет непустых значений в каждом столбце таблицы - PullRequest
0 голосов
/ 28 августа 2011

Я ищу недостающие данные в проекте переноса данных, и этот отчет очень мне поможет.

Учитывая таблицу MySQL, я хотел бы подсчитать все пустые (NULL или '') значения вкаждая строка этой таблицы.Выводом будет список имен столбцов и количество пустых или непустых строк для каждого столбца.Эти данные я бы сравнил вручную с исходными таблицами - вручную, потому что я ожидаю, что немногие значения совпадут с точно , а имена столбцов в исходной и импортированной таблицах будут совершенно разными.

У меня естьоколо 30 таблиц для проверки, несколько с 100 столбцами.У меня есть прямой доступ к MySQL с моего компьютера, но нет доступа для запуска каких-либо сценариев на сервере с базой данных.

Пример для таблицы A

Col1 Col2 Col3
'XX' NULL 'XX'
'XX' NULL ''
'XX' 'XX' 'XX'
'XX' ''   'XX'

Я бы хотел получить отчет (для не-impty считается с '' считается пустым):

Col1: 4
Col2: 1
Col3: 3

Ответы [ 4 ]

8 голосов
/ 28 августа 2011

COUNT также считает пустые строки, поэтому ваш запрос должен выглядеть следующим образом:

SELECT COUNT( NULLIF( col1, '' ) ), COUNT( NULLIF( col2, '' ) ), ...
2 голосов
/ 28 августа 2011

Вы можете использовать следующий запрос для каждой таблицы

SELECT COUNT(*), COUNT(col1) as col1, COUNT(col2) as col2
FROM TABLE1

Чтобы получить все столбцы для определенной таблицы, необходимо выполнить запрос

 select column_name from information_schema.columns where TABLE_NAME='TABLE1';

Результаты этого запроса, которые вы можете использовать для автоматического генерирования запросов, например, первого

1 голос
/ 19 декабря 2014

Подсчитывать только те строки, которые имеют значения (Пропуск пустых / пустых строк) !!!

SELECT COUNT( NULLIF( Column_Name, '' ) ) from Table_name
0 голосов
/ 11 ноября 2017

это сработало для меня

SELECT count( NULLIF( doctor_id, '' )) as doctor_count,count( NULLIF( chemist_id, '' )) as chemistcount from table_name WHERE employee_id="20";
...