여러 개의 수리 티켓이 포함된 테이블의 레코드 수를 세고 그 결과 회사별로 완료된 수리 티켓 수가 나오는 쿼리가 있습니다. 예; 회사코드 | 회사명 | 티켓 수
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 행 수를 해당 회사에 대한 행의 백분율로 얻습니다.