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

如何编写SQL按版本分组统计is_success=0的记录占比

问题说明

假设存在如下数据表,样例数据如下:

version  is_success(only 1 and 0)
0.1      0
0.1      0
0.1      1
0.1      1
0.2      0
0.2      0
0.2      0

需求为按version维度分组,计算每组中is_success=0的记录数占该组总记录数的比例,预期结果如下:

version   count(is_success=0)/count(all based on is_success type)
0.1       2/4=0.5
0.2       3/3=1
实现方法

核心逻辑为分组后通过条件聚合统计is_success=0的行数,再除以分组内总记录数得到对应占比。

通用SQL写法

该写法符合SQL标准,适配PostgreSQL、Hive、SQL Server、MySQL等绝大多数数据库:

SELECT
    version,
    SUM(CASE WHEN is_success = 0 THEN 1 ELSE 0 END) / COUNT(*) AS fail_ratio
FROM your_table
GROUP BY version;

注意将your_table替换为实际使用的表名即可。

数据库专属简化写法

  • MySQL环境下布尔表达式返回值为1/0,可直接求和简化代码:
SELECT
    version,
    SUM(is_success = 0) / COUNT(*) AS fail_ratio
FROM your_table
GROUP BY version;
  • 若存在分组无有效记录的场景,可增加除零保护逻辑,以MySQL为例:
SELECT
    version,
    IF(COUNT(*) = 0, 0, SUM(is_success = 0) / COUNT(*)) AS fail_ratio
FROM your_table
GROUP BY version;

执行对应SQL后即可得到预期的分组占比结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.02 23:45:53