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를 충족했습니다.

여기에 하위 쿼리가 포함될 가능성이 있다는 것을 알고 있지만 코딩 방법이나 하위 쿼리를 어디에 넣을지 잘 모르겠습니다.

동일한 결과 테이블의 일부로 결과를 갖고 싶습니다. 즉. 회사 코드 | 회사명 | 티켓 수 | % 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행이 그룹화된 후(예: is) 집계 함수로 적용됩니다 Count. 따라서 그룹화는 회사별로 이루어지기 때문에 MetSLA=yes 행 수를 해당 회사에 대한 행의 백분율로 얻습니다.

관련 정보