MS Access 2016 记录计数与子查询计数以及百分比结果

MS Access 2016 记录计数与子查询计数以及百分比结果

我有一个查询,它计算包含大量维修单的表中的记录数,结果是公司已完成的维修单数。示例:公司代码 | 公司名称 | 维修单数量

SELECT 
Incident.CompanyCode, Count(Incident.CompanyCode) AS IncCount
FROM 
Incident
GROUP BY
Incident.CompanyCode, Incident.IncidentType, Incident.IncidentClosed
HAVING
(((Incident.IncidentType)="On - Site") AND 
((Incident.IncidentClosed)=True));

现在,我很难理解的是这一点。每条被统计的记录都有一个字段,用于标记该票据已满足 SLA。该字段是一个文本字段,带有“Y”或“N”。

我试图计算上述查询中符合“Y”或“N”条件的记录数,然后将结果除以主查询的数量,得到符合条件的维修单的百分比。因此,在 xyz 公司 x 张维修单中,x% 符合 SLA。

我知道这可能涉及子查询,但我不确定如何编码或将子查询放在哪里。

我希望将结果作为同一张结果表的一部分,即公司代码 | 公司名称 | 票数 | % Met SLA

我不知道解决方案是否简单,但我已经研究这个问题有一段时间了,但我就是找不到。

任何帮助都将非常感激。

感谢您花时间查看这篇文章并提供任何帮助。

格雷格

答案1

SELECT 
    CompanyName, 
    CompanyCode, 
    Count(*), 
    Sum(iif(MetSLA, 1, 0))/Count(*) * 100
FROM 
    Incident
WHERE 
    IncidentType = "On - Site" 
    AND IncidentClosed = Yes
GROUP BY 
    CompanyName, CompanyCode;

说明:Sum(iif(MetSLA, 1, 0))表达式有效地对设置了 MetSLA 标志 (true/yes) 的行进行计数。Sum在对行进行分组后 (如Countis) 作为聚合函数应用。因此,您将得到 MetSLA=yes 行的计数,作为该公司行的百分比 (因为分组是按公司进行的)。

相关内容