我有一個查詢,統計包含多個維修單的表中的記錄數,結果是已完成的公司維修單數。例子;公司代碼 |公司名稱 |票數
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
在行分組後作為聚合函數應用(就像Count
這樣)。因此,您將獲得 MetSLA=yes 行的計數作為該公司行的百分比(因為分組是按公司進行的)。