首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何找到记录超过3的列数?

问如何找到记录超过3的列数?
EN

Stack Overflow用户
提问于 2020-09-16 08:03:37
回答 1查看 155关注 0票数 0

为了解决这个问题,我从information_schema.columns中获取列的名称,并进行查询,其中应该计算一列中的记录数。但是该子查询返回多个值,我不知道为什么,因为它应该返回行数-一个值。请解释我做错了什么。

代码语言:javascript
复制
SELECT count(COLUMN_NAME)

FROM INFORMATION_SCHEMA.COLUMNS

WHERE TABLE_NAME = 'users' group by COLUMN_NAME having((select count(COLUMN_NAME) from users where COLUMN_NAME is not null)>3) 

列

代码语言:javascript
复制
   name | surname
__________________
    a   | b
    c   | d
    e   | f
    e   | null

函数应该返回1 (name列有4条记录)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-09 08:15:08

您可以尝试此解决方案:

代码语言:javascript
复制
DECLARE dsql STRING;
DECLARE qry STRING;
SET qry = (
    SELECT
      STRING_AGG(ARRAY_TO_STRING(["SELECT '", column_name, "' AS ColumnName, " || "COUNT(" || column_name || ") AS RowCount FROM mydataset.", table_name, ' union all'], ''), ' ')
    FROM
      mydataset.INFORMATION_SCHEMA.COLUMNS
    WHERE
      table_name = 'users' );
SET dsql = 'SELECT * FROM ( ' || SUBSTR(qry, 1, LENGTH(qry) - LENGTH(' union all')) || ') WHERE RowCount > 3';
EXECUTE IMMEDIATE dsql;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63915672

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档