SQL: найти процент выполненных задач в зависимости от состояния - PullRequest
0 голосов
/ 06 июня 2018

У меня есть таблица, в которой перечислены задачи вместе с меткой, чтобы указать, выполнены они или нет.Таблица выглядит так:

Task |Статус

Task1 | Done

Task2 | Done

Task3 | Not done

Task4 | Done

Task5 | Not done

Я пытаюсь составить запрос, в котором будет указан процент выполненных задач, и результат должен выглядеть следующим образом:

Всего задач |Завершено |Завершено%

        5     |       3       |      60%

Проблема, с которой я сталкиваюсь, заключается в том, что я не могу понять, как подсчитать выполненные и незавершенные задачи, чтобы найти процент.

Ответы [ 2 ]

0 голосов
/ 06 июня 2018

Используйте функцию 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;

Найдите демонстрационную версию здесь

0 голосов
/ 06 июня 2018

Вы можете сделать условное агрегирование `завершено

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;
...