Postgresql Postgres:查找每列的不同值的数量
我试图在表的每一列中找到不同值的数量。声明性地说,即:Postgresql Postgres:查找每列的不同值的数量,postgresql,dynamic-sql,Postgresql,Dynamic Sql,我试图在表的每一列中找到不同值的数量。声明性地说,即: for each column of table xyz run_query("SELECT COUNT(DISTINCT column) FROM xyz") 显示查找表的列名 但是,我无法在内部合并计数查询。我尝试了各种查询,这一个: SELECT column_name, thecount FROM information_schema.columns, (SELECT COUNT(DISTINCT column
for each column of table xyz
run_query("SELECT COUNT(DISTINCT column) FROM xyz")
显示查找表的列名
但是,我无法在内部合并计数查询。我尝试了各种查询,这一个:
SELECT column_name, thecount
FROM information_schema.columns,
(SELECT COUNT(DISTINCT column_name) FROM myTable) AS thecount
WHERE table_name=myTable
语法上不允许(不允许在嵌套查询中引用列_name)
这一条似乎也有错误(超时):
使用一个查询获取表中每列的不同值的正确方法是什么
本文只讨论固定列。一般来说,SQL希望语句中的项(字段、表、角色、索引、约束等)的名称是常量。许多数据库系统允许您通过类似信息模式的方式检查结构,但这并不意味着您可以将该数据插入正在运行的语句中 但是,您可以使用信息模式来构造单独执行的新SQL语句 首先考虑你原来的问题。
CREATE TABLE foo (a numeric, b numeric, c numeric);
INSERT INTO foo(a,b,c)
VALUES (1,1,1), (1,1,2), (1,1,3), (1,2,1), (1,2,2);
SELECT COUNT(DISTINCT a) "distinct a",
COUNT(DISTINCT b) "distinct b",
COUNT(DISTINCT c) "distinct c"
FROM foo;
如果在编写查询时知道所有列的名称,就足够了
如果要查找任意表的数据,则需要通过SQL构造SQL语句(我添加了大量空格,以便您可以看到所涉及的不同级别):
然而,这只是必要的SQL语句的文本。根据您访问Postgresql的方式,您可能很容易将其输入到新的查询中,或者如果您将所有内容都保存在Postgresql中,那么您将不得不求助于一种集成的过程语言。一个优秀的(尽管很复杂)模型可以提供指导
SELECT column_name, count(distinct column_name)
FROM information_schema.columns, myTable
WHERE table_name=myTable
CREATE TABLE foo (a numeric, b numeric, c numeric);
INSERT INTO foo(a,b,c)
VALUES (1,1,1), (1,1,2), (1,1,3), (1,2,1), (1,2,2);
SELECT COUNT(DISTINCT a) "distinct a",
COUNT(DISTINCT b) "distinct b",
COUNT(DISTINCT c) "distinct c"
FROM foo;
SELECT 'SELECT ' || STRING_AGG( 'COUNT (DISTINCT '
|| column_name
|| ') "'
|| column_name
|| '"',
',')
|| ' FROM foo;'
FROM information_schema.columns
WHERE table_name='foo';