MS Access 2016 Contagem de registros com contagem de subconsultas com resultado percentual

0

Eu tenho uma consulta que conta o número de registros em uma tabela que contém vários tickets de reparo e o resultado é o número de tíquetes de reparo por empresa que foram concluídos. Exemplo; 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));

Agora, o que eu estou tendo dificuldade em ter minha cabeça enrolada é isso. Cada um dos registros que estão sendo contados tem um campo para marcar o ticket como tendo atendido um SLA. O campo é um campo de texto com um "Y" ou um "N".

O que estou tentando fazer é contar o número de registros na consulta acima, que atende aos critérios de "Y" ou "N", e dividir esse resultado pela contagem da consulta principal para obter uma porcentagem de tickets de reparo que correspondem aos critérios. Assim, em x número de tíquetes de reparação para empresa xyz, x% cumpriram o SLA.

Eu sei que isso provavelmente envolveria uma subconsulta, mas não sei como codificá-la ou onde colocar a subconsulta.

Eu gostaria de ter o resultado como parte da mesma tabela de resultados, ou seja, Companycode | CompnayName | CountOfTickets | % De SLAs atendidas

Eu não sei se a solução seria simples ou não, mas estou trabalhando nisso há algum tempo e não consigo ver.

Qualquer ajuda seria muito apreciada.

Obrigado por reservar um tempo para rever este post e por qualquer ajuda que seja dada.

Greg

    
por Greg 06.03.2018 / 17:08

1 resposta

0

SELECT 
    CompanyName, 
    CompanyCode, 
    Count(*), 
    Sum(iif(MetSLA, 1, 0))/Count(*) * 100
FROM 
    Incident
WHERE 
    IncidentType = "On - Site" 
    AND IncidentClosed = Yes
GROUP BY 
    CompanyName, CompanyCode;

Explicação: A expressão Sum(iif(MetSLA, 1, 0)) conta efetivamente as linhas em que o sinalizador MetSLA está definido (true / yes). Sum é aplicado como uma função agregada depois que as linhas são agrupadas (como Count is). Assim, você obtém uma contagem de linhas MetSLA = yes como uma porcentagem de linhas para essa empresa (já que o agrupamento é por empresa).

    
por 08.03.2018 / 21:52