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;

Find a demo here