SQL:根据状态查找完成的任务百分比

时间:2018-06-06 13:27:47

标签: sql oracle percentage

我有一个表格,列出了任务以及一个标签,以表明它们是否已完成。该表如下所示:

任务|状态

Task1 | Done

Task2 | Done

Task3 | Not done

Task4 | Done

Task5 | Not done

我正在尝试提出一个查询,列出已完成任务的百分比,输出应如下所示:

总任务|完成|已完成%

        5     |       3       |      60%

我遇到的问题是我无法弄清楚如何计算已完成和未完成的任务以查找百分比。

2 个答案:

答案 0 :(得分:1)

使用COUNT功能查找总计数。然后使用SUM函数和CASE表达式的组合查找已完成的计数。并使用这两个值,找到已完成的百分比。

<强>查询

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

答案 1 :(得分:0)

你可以做条件聚合`完成

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;