首页 > 解决方案 > 如何在进行分组时在 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

我正在考虑分两步进行,首先计算一个中间表,其中包含有关每个任务的运行次数的信息和另一个表,其中包含每个任务的成功次数。

现在可以直接计算包含每个任务的总运行次数的中间表,但我无法创建一个包含每个任务成功次数的表。

我怎么做?

标签: mysqlsql

解决方案


您可以使用avg()

select task_id, avg( task_info = 'succeeded' ) as success_rate
from t
group by task_id;

如果您更喜欢 0 到 100 之间的数字而不是 0 到 1 之间的数字,请将值乘以 100。


推荐阅读