PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

postgresql - liczba (brak wartości null) każdej kolumny w tabeli

To zapytanie utworzy instrukcję DML, aby uzyskać to, czego chcesz.

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;

Zwroty:

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

Możesz go również wykonać automatycznie. Ale nie w planach SQL, potrzebujesz EXECUTE w funkcji plpgsql lub DO w tym celu (PostgreSQL 9.0 lub nowszy).

Potrzebujesz również Postgresa 9.0 lub nowszego dla string_agg() funkcjonować. W starszych wersjach możesz zastąpić:array_to_string(array_agg(...), ', ') .

Możesz się zastanawiać nad specjalną obsadą 'mytbl'::regclass . Przeczytaj więcej o typach identyfikatorów obiektów w podręczniku.

BTW:NULL wartości nie są dodawane do COUNT(col) domyślnie.

Zastąp (z kwalifikowaną schematem) nazwę tabeli dla mytbl . W twoim przypadku powinno to być:

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

Jeśli powinieneś używać różnych wielkości liter lub w inny sposób pomieszanych identyfikatorów (zwróć uwagę na cudzysłowy):

...
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. Schematy Django i postgresql

  2. Co oznacza błąd importu:nie znaleziono symbolu:_PQencryptPasswordConn i jak to naprawić?

  3. przenoszenie danych z jednej tabeli do drugiej, edycja postgresql

  4. Jak zapobiec usunięciu pierwszego wiersza w tabeli (PostgreSQL)?

  5. Jak szybko usunąć użytkownika z istniejącymi uprawnieniami