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在行分組後作為聚合函數應用(就像Count這樣)。因此,您將獲得 MetSLA=yes 行的計數作為該公司行的百分比(因為分組是按公司進行的)。

相關內容