mysql - 如何在进行分组时在 sql 中的 COUNT() 中添加特定条件?
问题描述
假设我有一个 mysql 表,其中包含有关各种任务的信息。该表如下所示:
TASK_ID | TASK_INFO
task_1 | succeded
task_1 | failed
task_1 | failed
task_2 | succeded
task_2 | succeded
task_2 | failed
我想为每个任务计算它成功的时间百分比。例如上表的结果:
task1 | 33.3
task2 | 66.6
我正在考虑分两步进行,首先计算一个中间表,其中包含有关每个任务的运行次数的信息和另一个表,其中包含每个任务的成功次数。
现在可以直接计算包含每个任务的总运行次数的中间表,但我无法创建一个包含每个任务成功次数的表。
我怎么做?
解决方案
您可以使用avg()
:
select task_id, avg( task_info = 'succeeded' ) as success_rate
from t
group by task_id;
如果您更喜欢 0 到 100 之间的数字而不是 0 到 1 之间的数字,请将值乘以 100。
推荐阅读
- java - 按钮点击和 HashMap Android Studio
- excel - = text() 公式仅在我按 Enter 时有效
- python - 不使用搜索查询从所选频道获取*所有* Youtube 视频 ID
- rust - 如何在 Tokio 运行时上下文中从异步方法调用的非异步方法中等待未来?
- mysql - 这个 presto 查询有什么问题?
- macos - 如何解决 Big Sur 上的 CLT 问题?
- reactjs - 使用函数中的方法做出反应
- javascript - JavaScript 游戏中的设置间隔函数不是每 10 秒运行一次
- sql - 如何在 SQL 中添加更新列以添加外键
- css - 自定义钩子是最好的解决方案吗?