SQL: 根据状态查找任务完成百分比
SQL: Find percentage of tasks completed based on the status
我有一个 table,它列出了任务以及一个标签以指示它们是否已完成。 table 看起来像这样:
任务 |状态
Task1 | Done
Task2 | Done
Task3 | Not done
Task4 | Done
Task5 | Not done
我正在尝试提出一个查询,列出已完成任务的百分比,输出应如下所示:
总任务 |已完成 |已完成 %
5 | 3 | 60%
我面临的问题是我无法弄清楚如何计算已完成和未完成的任务以找到百分比。
您可以进行条件聚合`已完成
select totaltask, completed, 100 * completed / totaltask as CompletedPercentage
from (select count(*) as totaltask,
sum(case when status = 'Done' then 1 else 0 end) as completed
from table
) t;
使用COUNT
函数求总计数。然后使用 SUM
函数和 CASE
表达式的组合找到完成的计数。并使用这 2 个值,找到完成的百分比。
查询
select t.TotalTask, t.Completed,
(cast(t.Completed as float) / cast(t.TotalTask as float)) * 100 as CompletedPercentage
from (
select count(task) as TotalTask
, sum(case status when 'Done' then 1 else 0 end) as Completed
from your_table_name
) as t;
我有一个 table,它列出了任务以及一个标签以指示它们是否已完成。 table 看起来像这样:
任务 |状态
Task1 | Done
Task2 | Done
Task3 | Not done
Task4 | Done
Task5 | Not done
我正在尝试提出一个查询,列出已完成任务的百分比,输出应如下所示:
总任务 |已完成 |已完成 %
5 | 3 | 60%
我面临的问题是我无法弄清楚如何计算已完成和未完成的任务以找到百分比。
您可以进行条件聚合`已完成
select totaltask, completed, 100 * completed / totaltask as CompletedPercentage
from (select count(*) as totaltask,
sum(case when status = 'Done' then 1 else 0 end) as completed
from table
) t;
使用COUNT
函数求总计数。然后使用 SUM
函数和 CASE
表达式的组合找到完成的计数。并使用这 2 个值,找到完成的百分比。
查询
select t.TotalTask, t.Completed,
(cast(t.Completed as float) / cast(t.TotalTask as float)) * 100 as CompletedPercentage
from (
select count(task) as TotalTask
, sum(case status when 'Done' then 1 else 0 end) as Completed
from your_table_name
) as t;