MS-Access 计算报告中已完成任务的百分比
Posted
技术标签:
【中文标题】MS-Access 计算报告中已完成任务的百分比【英文标题】:MS-Access Calculating Percentage of Completed Tasks in a Report 【发布时间】:2011-08-17 20:37:25 【问题描述】:正如标题所说,我正在寻找一种方法来计算一个人已完成任务的百分比。数据是结构化的,每个人可以有很多任务,每个任务可以有很多子任务,如下所述:
员工
(pk)(自动编号)employee_id (文本)名字 (文本)姓氏任务
(pk)(自动编号)task_id (fk)(Number)employee_id (备忘录)说明 (是/否)已完成子任务
(pk)(自动编号)subtask_id (fk)(Number)task_id (备忘录)说明 (是/否)已完成我一直在尝试制作一份报告(名为“任务完成率”),其中列出了所有员工、他们完成的任务数量、他们拥有的任务总数以及完成率的百分比。目前,我有以下两个疑问:
SELECT Count(employee_id) FROM [Tasks] AS TotalTasks WHERE [Tasks].employee_id = 报告![任务完成率]!txt_employeeID SELECT Count(employee_id) FROM [Tasks] AS CompletedTasks WHERE [Tasks].employee_id = Reports![Task Completion Rates]!txt_employeeID AND [Tasks].Completed = 1这两个都是必要的,还是有办法从一个查询中获取两个计数?另外,我将如何在报告中使用这些总数?报表的记录源设置为员工表,以便可以将它们全部列出。我已经为每个总数准备好文本框,但是我在使用每个文本框的源中的表达式生成器来实际显示查询结果时遇到问题。我将其中一个文本框的源设置为 =[qry_TotalTasksPerEmployee]![TotalTasks](通过表达式生成器),但它一直提示我输入 [qry_TotalTasksPerEmployee] 的值。关于如何使其工作的任何想法?
【问题讨论】:
我本来想问一个关于使用更新查询将主要任务标记为已完成/未完成的问题,但我决定做一些不同的事情,只是忘记删除问题的那部分. 【参考方案1】:尝试取完成值的平均值。例如:
SELECT employee_id, -avg(Completed) FROM [Tasks] GROUP BY employee_id
avg
之前的-
是因为@Neil 指出,true
存储为-1
。
我不确定您对报告的含义 - 将查询结果放入报告中应该很容易。
【讨论】:
不错的答案,但您忘记了 True 是 -1,因此您需要在沿线某处取反。 谢谢,效果很好!不过,我希望我可以标记您的两个答案,因为我最终使用了 Eddy 建议的总和计算来计算已完成任务的总数。 唉,我还没有为人们投票所需的代表。 =( 哦,对了!也许有人会同情一些菜鸟并给我们一些支持。在 200 次代表时,广告更少。【参考方案2】:我不是很喜欢 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% 或...)
【讨论】:
以上是关于MS-Access 计算报告中已完成任务的百分比的主要内容,如果未能解决你的问题,请参考以下文章
project中为啥修改了子任务中的实际完成百分比,但是总任务中的百分比不会随着改变?