Recuento de registros de MS Access 2016 con recuento de subconsultas con resultado porcentual

Recuento de registros de MS Access 2016 con recuento de subconsultas con resultado porcentual

Tengo una consulta que cuenta la cantidad de registros en una tabla que contiene una cantidad de tickets de reparación y el resultado es la cantidad de tickets de reparación por empresa que se han completado. Ejemplo; Código de empresa | Nombre de la empresa | ConteoDeTickets

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));

Ahora, lo que me cuesta entender es esto. Cada uno de los registros que se cuentan tiene un campo para marcar el ticket como si cumpliera con un SLA. El campo es un campo de texto con una "Y" o una "N".

Lo que estoy tratando de hacer es contar el número de registros dentro de la consulta anterior, que cumplen con los criterios de "Y" o "N", y luego dividir ese resultado por el recuento de la consulta principal para obtener un porcentaje de tickets de reparación que coincidan con los criterios. Entonces, de x número de tickets de reparación para la empresa xyz, el x% ha cumplido el SLA.

Sé que esto probablemente implicaría una subconsulta, pero no estoy seguro de cómo codificarla ni dónde colocarla.

Me gustaría tener el resultado como parte de la misma tabla de resultados, es decir, Código de empresa | Nombre de la empresa | ConteoDeTickets | % Cumplido SLA

No sé si la solución sería sencilla o no, pero llevo un tiempo trabajando en esto y simplemente no lo veo.

Cualquier ayuda sería muy apreciada.

Gracias por tomarse el tiempo de revisar esta publicación y por cualquier ayuda brindada.

Greg

Respuesta1

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

Explicación: la Sum(iif(MetSLA, 1, 0))expresión cuenta efectivamente las filas donde está establecido el indicador MetSLA (verdadero/sí). Sumse aplica como una función agregada después de agrupar las filas (como Countestá). Por lo tanto, obtiene un recuento de filas MetSLA=yes como porcentaje de filas para esa empresa (ya que la agrupación es por empresa).

información relacionada