MS Access 2016 Количество записей с подзапросом и процентным результатом

MS Access 2016 Количество записей с подзапросом и процентным результатом

У меня есть запрос, который подсчитывает количество записей в таблице, содержащей количество заявок на ремонт, и результатом является количество выполненных заявок на ремонт по компаниям. Пример: Companycode | CompnayName | CountOfTickets

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", а затем разделить этот результат на количество основного запроса, чтобы получить процент заявок на ремонт, которые соответствуют критериям. Итак, из x количества заявок на ремонт для компании xyz, x% соответствуют SLA.

Я знаю, что это, скорее всего, потребует подзапроса, но я не уверен, как это закодировать или где поместить подзапрос.

Я хотел бы получить результат как часть той же таблицы результатов, т.е. Companycode | CompnayName | CountOfTickets | % 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 в процентах от строк для этой компании (так как группировка осуществляется по компаниям).

Связанный контент