Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PostgreSQL:基于特定列和条件的模式中每个表的行计数_Sql_Postgresql_Information Schema - Fatal编程技术网

PostgreSQL:基于特定列和条件的模式中每个表的行计数

PostgreSQL:基于特定列和条件的模式中每个表的行计数,sql,postgresql,information-schema,Sql,Postgresql,Information Schema,我需要在只包含空值的模式中找到表示“性别”的特定列的行计数。我有数百个模式,每个模式有10多个表,因此我还需要根据模式名称对其进行分组。如何实现这一点?创建一个表,根据您的条件存储表名和行数 -- Table: test.row_count -- DROP TABLE test.row_count; CREATE TABLE test.row_count ( table_name character varying, count integer ) WITH ( OIDS=FAL

我需要在只包含空值的模式中找到表示“性别”的特定列的行计数。我有数百个模式,每个模式有10多个表,因此我还需要根据模式名称对其进行分组。如何实现这一点?

创建一个表,根据您的条件存储表名和行数

-- Table: test.row_count

-- DROP TABLE test.row_count;

CREATE TABLE test.row_count
(
  table_name character varying,
  count integer
)
WITH (
  OIDS=FALSE
);
ALTER TABLE test.row_count
  OWNER TO postgres;
下面的代码将帮助您在上表中存储行数和表名

-- Function: retrive_row_count()

-- DROP FUNCTION retrive_row_count();

CREATE OR REPLACE FUNCTION retrive_row_count()
  RETURNS integer AS
$BODY$

DECLARE
  v_table text;
BEGIN

FOR v_table IN
    SELECT table_schema||'.'||table_name 
    FROM information_schema.columns 
    WHERE column_name = 'gender'
LOOP

   EXECUTE 'INSERT INTO test.row_count(table_name , count) SELECT '''||v_table || ''' , COUNT(*) FROM '||v_table || ' WHERE  gender IS NULL' ;



END LOOP;

return 1;
    END;
$BODY$
  LANGUAGE plpgsql VOLATILE
  COST 100;
ALTER FUNCTION retrive_row_count()
  OWNER TO postgres;

提供一些示例数据和期望输出,以帮助我们可视化您的问题。请阅读,这里是一个学习如何提高你的问题质量和获得更好答案的好地方。嗨@Mohit谢谢你的回复。我已经尝试了你的解决方案,它给了我成功的查询,但是我不确定我应该在哪里检查结果。我对你提出的两个问题都做了一些调整。我将第一个查询更改为如下内容:创建表信息\u schema.row\u count,而不是“test”,因为test给了我一个错误。您可以使用您想要的任何表名。e、 g使用public.row\u count。请确保在过程“retrive_row_count()”中也更改了表名。好的,谢谢。稍后它将尝试并给出反馈。非常感谢!您好,我已经尝试运行它了。查询没有返回错误,但是表中没有插入数据,SQL查询中可能缺少某些内容?如果我想按架构名称对行计数进行分组,该怎么办?