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

SQL分组统计问题:如何按Test_code和test_result统计结果次数?

解决混合类型列分组统计问题的方案

核心思路

问题根源确实是test_result列的混合类型(文本+数值)导致分组逻辑异常,解决关键是先把该列所有值统一转换为字符串类型,再按Test_code和转换后的test_result分组统计次数。

不同数据库的实现代码

MySQL/MariaDB

SELECT 
    Test_code,
    CAST(test_result AS CHAR) AS test_result,
    COUNT(Patient_id) AS total_result
FROM 
    你的表名
GROUP BY 
    Test_code, CAST(test_result AS CHAR)
ORDER BY 
    Test_code, total_result DESC;

PostgreSQL

PostgreSQL对类型校验更严格,用::text强制转换:

SELECT 
    Test_code,
    test_result::text AS test_result,
    COUNT(Patient_id) AS total_result
FROM 
    你的表名
GROUP BY 
    Test_code, test_result::text
ORDER BY 
    Test_code, total_result DESC;

SQL Server

SELECT 
    Test_code,
    CONVERT(VARCHAR(255), test_result) AS test_result,
    COUNT(Patient_id) AS total_result
FROM 
    你的表名
GROUP BY 
    Test_code, CONVERT(VARCHAR(255), test_result)
ORDER BY 
    Test_code, total_result DESC;

为什么之前的方法失效?

当列存在混合类型时,数据库会尝试隐式转换,但字符串和数值的转换逻辑可能冲突:比如数值0.09和字符串'0.09'会被判定为不同分组,甚至直接抛出类型转换错误。统一转成字符串后,所有值都会以文本形式被正确识别分组。

后续优化建议

如果这类统计是高频需求,建议直接修改表结构,把test_result列设为字符串类型(比如VARCHAR(255)),从根源避免混合类型带来的各种问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 02:30:15