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

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

Ich habe eine Abfrage, die die Anzahl der Datensätze in einer Tabelle zählt, die eine Reihe von Reparaturtickets enthält, und das Ergebnis ist die Anzahl der abgeschlossenen Reparaturtickets nach Unternehmen. Beispiel: Firmencode | Firmenname | AnzahlTickets

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

Was ich jetzt nicht so ganz begreifen kann, ist Folgendes. Jeder der gezählten Datensätze hat ein Feld, in dem das Ticket als SLA-konform markiert werden kann. Das Feld ist ein Textfeld mit einem „J“ oder einem „N“.

Ich versuche, die Anzahl der Datensätze in der obigen Abfrage zu zählen, die die Kriterien „J“ oder „N“ erfüllen, und dieses Ergebnis dann durch die Anzahl der Hauptabfrage zu teilen, um einen Prozentsatz der Reparaturtickets zu erhalten, die die Kriterien erfüllen. Von x Reparaturtickets für Unternehmen xyz haben also x % das SLA erfüllt.

Ich weiß, dass dies wahrscheinlich eine Unterabfrage beinhalten würde, bin mir aber nicht sicher, wie ich sie codieren oder wo ich die Unterabfrage platzieren soll.

Ich hätte das Ergebnis gern als Teil derselben Ergebnistabelle, d. h. Firmencode | Firmenname | Anzahl Tickets | SLA in % erfüllt

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

Für jede Hilfe wäre ich sehr dankbar.

Vielen Dank, dass Sie sich die Zeit genommen haben, diesen Beitrag zu lesen, und für Ihre Hilfe.

Greg

Antwort1

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

Erklärung: Der Sum(iif(MetSLA, 1, 0))Ausdruck zählt effektiv Zeilen, bei denen das MetSLA-Flag gesetzt ist (true/yes). Sumwird als Aggregatfunktion angewendet, nachdem die Zeilen gruppiert wurden (wie Count). Somit erhalten Sie eine Anzahl von MetSLA=yes-Zeilen als Prozentsatz der Zeilen für dieses Unternehmen (da die Gruppierung nach Unternehmen erfolgt).

verwandte Informationen