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

如何按关卡(level)计算失败率?SQL新手求助

SQL实现关卡失败率统计

现有表格数据

假设表名为game_events,数据如下:

ideventlevel
1level_started1
1level_completed1
1level_started2
1level_failed2
2level_started1
2level_completed1
2level_started2
2level_failed2
4level_started1
4level_completed1
4level_started2
4level_failed2
5level_started1
5level_completed1
5level_started2
5level_failed2
3level_started1
3level_completed1
3level_started2
3level_failed2

期望输出格式

需要按关卡统计失败率,输出如下结构:

levelloss_rate (in percentages)
1
2

失败率定义:event为level_failed的记录占比。

SQL实现方案

方案一:按关卡尝试次数计算失败率(更符合业务逻辑)

这里的失败率指失败次数/关卡尝试次数(尝试次数即level_started的记录数):

SELECT 
    level,
    ROUND(
        (COUNT(CASE WHEN event = 'level_failed' THEN 1 END) * 100.0) / 
        COUNT(CASE WHEN event = 'level_started' THEN 1 END),
        2
    ) AS `loss_rate (in percentages)`
FROM game_events
GROUP BY level
ORDER BY level;

方案二:按关卡所有事件记录计算失败率

严格按"level_failed记录占该关卡所有event记录的比例"计算:

SELECT 
    level,
    ROUND(
        (COUNT(CASE WHEN event = 'level_failed' THEN 1 END) * 100.0) / 
        COUNT(*),
        2
    ) AS `loss_rate (in percentages)`
FROM game_events
GROUP BY level
ORDER BY level;

说明

  • 将game_events替换为你的实际表名
  • ROUND(...,2)用于保留两位小数,可根据需求调整保留位数
  • GROUP BY level确保按每个关卡单独统计
  • 两种方案在样本数据中结果一致:关卡1的失败率为0%,关卡2为50%

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 09:45:03