MS-Access Расчет процента выполненных задач в отчете - PullRequest
1 голос
/ 18 августа 2011

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

Сотрудники

  • (pk) (AutoNumber) employee_id
  • (текст) FirstName
  • (текст) LastName

Задачи

  • (pk) (AutoNumber) task_id
  • (fk) (Number) employee_id
  • (Memo) Описание
  • (Да / Нет) Завершено

Подзадачи

  • (pk) (AutoNumber) subtask_id
  • (fk) (Number) task_id
  • (Memo) Описание
  • (Да / Нет) Завершено

Я пытался сделать отчет (названный «Показатели завершения задач»), в котором перечислены все сотрудники, количество выполненных задач, которые у них есть, общее количество задач, которые у них есть, и их процент выполнения в процентах.На данный момент у меня есть два следующих запроса:

  • SELECT Count (employee_id) FROM [Задачи] AS TotalTasks WHERE [Задачи] .employee_id = Отчеты! [Скорость выполнения задач]! Txt_employeeID
  • SELECT Count (employee_id) FROM [Tasks] AS CompletedTasks WHERE [Задачи] .employee_id = Отчеты! [Скорость выполнения задач]! Txt_employeeID AND [Задачи] .Completed = 1

Обаэто необходимо, или есть способ получить оба счета из одного запроса?Кроме того, как бы я использовал эти итоги в отчете?В качестве источника записи отчета указана таблица «Сотрудники», чтобы можно было перечислить их все.У меня есть готовые текстовые поля для каждой суммы, но у меня возникают проблемы с использованием построителя выражений в исходном тексте для каждого текстового поля, чтобы фактически отобразить результаты запросов.Я установил источник для одного из текстовых полей равным = [qry_TotalTasksPerEmployee]! [TotalTasks] (через построитель выражений), но он продолжает предлагать мне ввести значение для [qry_TotalTasksPerEmployee].Любые идеи о том, как это работает?

Ответы [ 2 ]

1 голос
/ 18 августа 2011

Попробуйте взять среднее значение вашего завершенного значения.Например:

SELECT employee_id, -avg(Completed) FROM [Tasks] GROUP BY employee_id

- перед avg, потому что true хранится как -1, на что указывает @ Neil.

Я не уверенчто вы имеете в виду под отчетом - в отчет должно быть легко помещать результаты запроса.

0 голосов
/ 18 августа 2011

Я на самом деле не в отчетах о msaccess, но так как завершено, кажется, либо 0, либо 1, вы должны работать над следующим запросом -Эдит оказывается, что это либо 1, либо -1 для бул, поэтому он не может сделать сумму (завершено), но нужен IIF ()

Select employee_id, count(*), sum(IIF(completed,1,0)), sum(IIF(completed,1,0))*100/count(*) as rate
From employees
Left join tasks
On tasks.employee_id = employees.employee_id
Group by employee_id

Обратите внимание, что это создает проблему деления на ноль для сотрудников без задач. Вам придется решить, как поступить с этими (исключите, покажите как 0% или ...)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...