PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

postgresql - hitung (tidak ada nilai nol) dari setiap kolom dalam tabel

Kueri ini akan membuat pernyataan DML untuk mendapatkan apa yang Anda inginkan.

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;

Pengembalian:

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

Anda juga dapat menjalankannya secara otomatis. Tetapi tidak dalam paket SQL, Anda perlu EXECUTE dalam fungsi plpgsql atau DO pernyataan (PostgreSQL 9.0 atau yang lebih baru) untuk itu.

Anda juga memerlukan Postgres 9.0 atau yang lebih baru untuk string_agg() fungsi. Di versi yang lebih lama, Anda dapat mengganti:array_to_string(array_agg(...), ', ') .

Anda mungkin bertanya-tanya tentang pemeran khusus 'mytbl'::regclass . Baca lebih lanjut tentang jenis pengenal objek di manual.

BTW:NULL nilai tidak ditambahkan ke COUNT(col) secara default.

Ganti nama tabel (memenuhi syarat skema) untuk mytbl . Dalam kasus Anda yang seharusnya:

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

Jika Anda harus menggunakan huruf besar atau kecil atau pengidentifikasi yang kacau (perhatikan tanda kutip):

...
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. Solusi Cloud PostgreSQL Terkelola Tolok Ukur - Bagian Satu:Amazon Aurora

  2. ScaleGrid PostgreSQL di VMware Cloud Infrastructure

  3. Cara Mengubah Lokal Saat Memformat Angka di PostgreSQL

  4. Bagaimana cara membuat daftar indeks yang dibuat untuk tabel di postgres

  5. Postgres Kiri Gabung dengan kondisi dimana