Значение NULL. Пустой и заполненный счетчик в таблице postgresql - PullRequest
0 голосов
/ 03 марта 2020

Мне нужно посчитать, сколько полей пустые и заполнены в таблице. Где каждый столбец будет полем, например:

select COUNT(1),
  case when table.name is null
        then 'Null'
  when table.name = ''
        then 'Empty'
  else 'Filled' end
from table

( это пример )

FIELD   NULL    EMPTY    FILLED
name     0         2       98
age     10        10       80
heigh    0        50       50

Кто-нибудь знает, как я могу сделать это? В этой таблице около 30 столбцов.

1 Ответ

0 голосов
/ 04 марта 2020

Вы можете преобразовать каждую строку в значение JSON, а затем сгруппировать по ключам значения json (которые являются именами столбцов):

select d.col, 
       count(*) filter (where value is null) as null_count,
       count(*) filter (where value is not null) as not_null_count,
       count(*) filter (where value = '') as empty
from the_table t
  cross join jsonb_each_text(to_jsonb(t)) as d(col, value)
group by d.col;  

Обратите внимание, что это будет намного медленнее, чем перечислять вручную каждый столбец, как вы.

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