PostgreSQL:基于特定列和条件的模式中每个表的行计数
我需要在只包含空值的模式中找到表示“性别”的特定列的行计数。我有数百个模式,每个模式有10多个表,因此我还需要根据模式名称对其进行分组。如何实现这一点?创建一个表,根据您的条件存储表名和行数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
-- 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查询中可能缺少某些内容?如果我想按架构名称对行计数进行分组,该怎么办?