You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL多列聚合统计:实现各列Y/N/I值的计数及指定格式输出

问题分析

你原来的SQL写法错误在于,GROUP BY field_1, field_2 ... field_20会把20个字段的所有组合当成独立分组,统计的是每个组合下各字段的数量,而不是单独每列中Y/N/I的出现次数,完全偏离了需求。

正确实现方法

根据你想要的示例格式(推测是“每行对应Y/N/I,每列对应字段的计数”),可以用条件聚合+UNION ALL实现;如果需要更灵活的纵向输出格式,也可以用UNION ALL合并单字段统计结果。

方法1:横向输出(匹配预期示例格式)

这种方式生成3行(对应Y/N/I),每行包含20列各取值的计数,和你预期的格式一致:

SELECT
    'Y' AS 取值,
    COUNT(CASE WHEN field_1 = 'Y' THEN 1 END) AS field_1,
    COUNT(CASE WHEN field_2 = 'Y' THEN 1 END) AS field_2,
    COUNT(CASE WHEN field_3 = 'Y' THEN 1 END) AS field_3,
    -- 依次复制上述格式,替换为field_4到field_20
    COUNT(CASE WHEN field_20 = 'Y' THEN 1 END) AS field_20
FROM 你的表名
UNION ALL
SELECT
    'N' AS 取值,
    COUNT(CASE WHEN field_1 = 'N' THEN 1 END) AS field_1,
    COUNT(CASE WHEN field_2 = 'N' THEN 1 END) AS field_2,
    COUNT(CASE WHEN field_3 = 'N' THEN 1 END) AS field_3,
    -- 依次复制上述格式,替换为field_4到field_20
    COUNT(CASE WHEN field_20 = 'N' THEN 1 END) AS field_20
FROM 你的表名
UNION ALL
SELECT
    'I' AS 取值,
    COUNT(CASE WHEN field_1 = 'I' THEN 1 END) AS field_1,
    COUNT(CASE WHEN field_2 = 'I' THEN 1 END) AS field_2,
    COUNT(CASE WHEN field_3 = 'I' THEN 1 END) AS field_3,
    -- 依次复制上述格式,替换为field_4到field_20
    COUNT(CASE WHEN field_20 = 'I' THEN 1 END) AS field_20
FROM 你的表名;

原理:用CASE WHEN筛选对应字段的目标取值,COUNT统计符合条件的行数;再用UNION ALL把Y、N、I的统计结果拼接成3行。

方法2:纵向输出(灵活适配后续分析)

如果需要后续做数据处理,这种格式更方便,每行记录“字段名、取值、计数”:

SELECT 'field_1' AS 字段名, field_1 AS 取值, COUNT(*) AS 计数 FROM 你的表名 GROUP BY field_1
UNION ALL
SELECT 'field_2' AS 字段名, field_2 AS 取值, COUNT(*) AS 计数 FROM 你的表名 GROUP BY field_2
UNION ALL
SELECT 'field_3' AS 字段名, field_3 AS 取值, COUNT(*) AS 计数 FROM 你的表名 GROUP BY field_3
-- 依次复制上述格式,替换为field_4到field_20
UNION ALL
SELECT 'field_20' AS 字段名, field_20 AS 取值, COUNT(*) AS 计数 FROM 你的表名 GROUP BY field_20;

原理:单独统计每个字段的取值分布,再用UNION ALL合并所有字段的结果。

内容的提问来源于stack exchange,提问作者hamesjendo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 17:42:13