Snowflake中如何合并三查询统计不同数据类型列数?
Snowflake 按表统计多类型列数的合并查询方案
你可以用条件聚合实现单查询输出所有类型的列数统计,这比UNION更适配你的需求——UNION是把多个结果集的行拼接,而你需要的是在同一行展示每个表的三类列数。
最终查询语句
SELECT table_name, COUNT(CASE WHEN data_type IN ('NUMBER', 'FLOAT') THEN 1 END) AS "COUNT OF NUMERIC COLUMNS", COUNT(CASE WHEN data_type IN ('TEXT', 'VARIANT') THEN 1 END) AS "COUNT OF NON-NUMERIC COLUMNS", COUNT(CASE WHEN data_type IN ('TIMESTAMP', 'DATE') THEN 1 END) AS "COUNT OF DATE COLUMNS" FROM information_schema.columns GROUP BY table_name ORDER BY table_name;
逻辑说明
- 每个
COUNT(CASE ...)仅统计符合对应数据类型的列:当列类型匹配时返回1,否则返回NULL,而COUNT函数会自动忽略NULL值,最终得到对应类型的列数。 - 如果需要补充其他归类的类型(比如新增的数值型类型),直接在
IN列表里添加即可。 - 该语句会自动包含所有表,哪怕某类列数为0的表也会显示对应0值,无需额外处理。
内容的提问来源于stack exchange,提问作者Sab
相关产品推荐
相关产品推荐

