PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

postgresql - брой (без нулеви стойности) на всяка колона в таблица

Тази заявка ще създаде DML израза, за да получите това, което искате.

SELECT 'SELECT ' || string_agg('count(' || quote_ident(attname) || ')', ', ')
    || 'FROM '   || attrelid::regclass
FROM   pg_attribute
WHERE  attrelid = 'mytbl'::regclass
AND    attnum  >= 1           -- exclude tableoid & friends (neg. attnum)
AND    attisdropped is FALSE  -- exclude deleted columns
GROUP  BY attrelid;

Връща:

SELECT count(col1), count(col2), count(col3), ...
FROM   mytbl

Можете също да го изпълните автоматично. Но не в план SQL, трябва EXECUTE във функция plpgsql или DO изявление (PostgreSQL 9.0 или по-нова версия) за това.

Също така се нуждаете от Postgres 9.0 или по-нова версия за string_agg() функция. В по-старите версии можете да замените:array_to_string(array_agg(...), ', ') .

Може да се чудите за специалното предаване 'mytbl'::regclass . Прочетете повече за типовете идентификатори на обекти в ръководството.

BTW:NULL стойностите не се добавят към COUNT(col) по подразбиране.

Заменете името на таблицата (квалифицирано към схемата) за mytbl . Във вашия случай това трябва да бъде:

...
WHERE  attrelid = 'geoproject.mes_wastab'::regclass
...

Ако трябва да използвате смесени главни или по друг начин объркани идентификатори (обърнете внимание на кавичките):

...
WHERE  attrelid = '"gEopRoject"."MES_wastab"'::regclass
...


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PostgreSQL:Временно деактивирайте връзките

  2. Как да актуализирате масив в PostgreSQL

  3. PostgreSQL чрез SSH тунел

  4. Създайте ER диаграма в pgAdmin

  5. Сравнителен анализ, управлявани PostgreSQL облачни решения:Част втора – Amazon RDS