如何查找记录超过 3 的列数?

How to find the number of columns in which records are more than 3?

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

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) 

   name | surname
__________________
    a   | b
    c   | d
    e   | f
    e   | null

函数应该return 1(名称列有4条记录)

您可以试试这个解决方案:

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;