MS Access 2016 Datensatzzählung mit Unterabfragezählung mit Prozentergebnis

476
Greg

Ich habe eine Abfrage, die die Anzahl der Datensätze in einer Tabelle zählt, die eine Anzahl von Reparaturtickets enthält. Das Ergebnis ist die Anzahl der Reparaturtickets nach Unternehmen, die abgeschlossen wurden. Beispiel; Firmencode | 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)); 

Nun, was mir schwer fällt, meinen Kopf zu wickeln, ist Folgendes. Jeder der Datensätze, die gezählt werden, hat ein Feld, um das Ticket als ein SLA zu kennzeichnen. Das Feld ist ein Textfeld mit einem "Y" oder einem "N".

Ich versuche, die Anzahl der Datensätze in der obigen Abfrage zu zählen, die entweder die Kriterien "Y" oder "N" erfüllen, und dann das Ergebnis durch die Anzahl der Hauptabfragen zu teilen, um einen Prozentsatz von zu erhalten Reparaturtickets, die den Kriterien entsprechen. Von x der Anzahl der Reparaturtickets für die Firma xyz haben also x% die SLA erfüllt.

Ich weiß, dass dies wahrscheinlich eine Unterabfrage beinhalten würde, aber ich bin mir nicht sicher, wie man sie codiert oder wo die Unterabfrage platziert wird.

Ich möchte das Ergebnis als Teil derselben Ergebnistabelle haben, dh .. Companycode | CompnayName | CountOfTickets | % Erfüllt SLA

Ich weiß nicht, ob die Lösung eine einfache Lösung ist oder nicht, aber ich arbeite schon seit einiger Zeit daran und kann sie einfach nicht sehen.

Jede Hilfe wäre sehr dankbar.

Vielen Dank, dass Sie sich die Zeit genommen haben, um diesen Beitrag zu überprüfen und für jegliche Hilfe, die gegeben wird.

Greg

0

1 Antwort auf die Frage

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

Erläuterung: Der Sum(iif(MetSLA, 1, 0))Ausdruck zählt effektiv die Zeilen, in denen das MetSLA-Flag gesetzt ist (true / yes). Sumwird als Aggregatfunktion angewendet, nachdem die Zeilen gruppiert wurden (wie sie Countsind). Daher erhalten Sie eine Anzahl von MetSLA = yes-Zeilen als Prozentsatz der Zeilen für diese Firma (da die Gruppierung nach Unternehmen erfolgt).