web-dev-qa-db-ja.com

PostgreSQLでNOT NULLの列を見つける

ヌル可能列をカウントするために、各テーブルに割り当てがありました。簡単:

 SELECT table_name, count(*) FROM INFORMATION_SCHEMA.COLUMNS
 WHERE is_nullable='NO'
 GROUP BY table_name;


今、これを変更して、「プロパティ「NOT NULL」を持つ列」をカウントする必要があります。次のコードはこれを行いますか、それとも単に天気列名がnullではないことを確認しますか?

CREATE TEMP TABLE A AS 
SELECT DISTINCT column_name, table_name AS name FROM INFORMATION_SCHEMA.COLUMNS
WHERE column_name IS NOT NULL
GROUP BY table_name, column_name;

SELECT name, count(*) FROM A
GROUP BY name;

「いいえ」の場合...アドバイスはありますか?

34

いや.

このクエリ

SELECT DISTINCT column_name, table_name
FROM INFORMATION_SCHEMA.COLUMNS
WHERE column_name IS NOT NULL

列「column_name」に値を持つすべての行を返します。

そのテーブルのすべての行の列「column_name」には常に値があります。

ヌル可能列と非ヌル可能列の数を知る必要があるだけですか?

SELECT is_nullable, COUNT(*)
FROM INFORMATION_SCHEMA.COLUMNS
GROUP BY is_nullable;

テーブル名でカウントしますか?これが使えると思います。

SELECT table_name, is_nullable, count(*)
FROM INFORMATION_SCHEMA.COLUMNS
GROUP BY table_name, is_nullable
ORDER BY table_name, is_nullable;

テーブル内のすべてのNOT NULL列のカウントを取得するには、次を使用します。

SELECT count(*)
  FROM information_schema.columns
 WHERE table_schema = 'table_schema_here'
   AND table_name   = 'table_name_here'
   AND is_nullable = 'YES';

これが誰かの助けになることを願っています。

0
J Ngugi