Logik für eine komplexe Abfrage, bei der in SQL gruppiert und gemittelt wird

9

Ich habe zwei Tische.
Im Folgenden sind die Schritte aufgeführt, die ich ausführen muss, um die gewünschte Ausgabe zu erhalten. Ich könnte bis Schritt 3 folgen. Bitte helfen Sie mir, da es ein wenig komplex ist und ich nicht verstehen kann, wie ich weiter vorgehen soll.

Tabelle 1

%Vor%

Tabelle 2:

%Vor%

Schritte:

  1. Die Kombination der beiden Spalten "Site" und "Code" in Tabelle 1 wird anhand der Kombination der Spalten "Site" und "Code" in Tabel2 betrachtet.

  2. Filtern Sie dasselbe in der Spalte "Fehler" und ermitteln Sie die Anzahl der Fehler

    Unten ist die Abfrage und die Ausgabe:

    %Vor%
  3. Wir prüfen in Tabelle 2 auf die gleiche Kombination. Das heißt, die Site und der Code der Ausgabe von Schritt 2 werden in Tabelle 2 untersucht, um ihre Häufigkeit zu erhalten.

  4. Berechnungen:

    a. CC% = [1- (FailCount / Count)] * 100 = [1- (2/4)] * 100

    b. B.P.O% = [1- (FailCount / Freq)] * 100 = [1- (2/43)] * 100

    c.Forecast% =

    Nehmen wir an, der aktuelle Monat ist März.

    Berechnen Sie die Anzahl der Fehler in den letzten 3 Jahren und finden Sie den Durchschnitt, und sagen wir als 'X'.
    Berechnen Sie den Ausfall für verbleibende Monate, 'Y' = (X * Verbleibende Monate / 12)
    Totalausfall über 12 Monate = Stromausfall + Y

    Daher Prognose% = [1- (Gesamtfehler über 12 Monate / Freq)] * 100.

    Nehmen wir in unserem Beispiel den Wert von X = 2 an Also Y = (2 * 9/12)

    Prognose% = [1- (1 + 1.5)] * 100

  5. Die obigen Berechnungen würden für alle möglichen Kombinationen von Site und Code durchgeführt.

    %Vor%
  6. Die Gruppierung der obigen Tabelle erfolgt auf dem Site-Typ, d. h. dem ersten Buchstaben der Site. Dann erfolgt der Durchschnitt aller Berechnungen (cc, BPO, Forecast) nach der Gruppierung Zum Beispiel: - "A" für "ABT", "T" für "TRG". (Ich gehe davon aus, dass wir entweder mehrere Tabellen für mehrere Typen erstellen und dann eine Union ausführen, um die folgende Abfrage zu erhalten)

    Beispiele: -

    %Vor%

Dies sollte meine letzte Ausgabe sein. Freundlich helfen.

Hinzufügen der Skripte für die Tabellen, um die Hilfe zu erleichtern:

Tabelle 1 Skripte:

%Vor%

Tabelle 2 Skripte:

%Vor%     
user1483122 26.06.2013, 16:27
quelle

1 Antwort

1

"Ein kleiner Komplex." Ja.

Von oben beginnend, hier ist dein Schritt 2. Dies könnte einen entscheidenden Nachteil haben, da es nichts einschränkt, wenn es 3 Jahre oder die letzten 12 Monate dauert. Es ist nicht klar aus deiner Frage, ob das Absicht war, also werden wir das verwenden.

%Vor%

Muss mit Table2 verbunden werden, um das Frequenzfeld zu erhalten. Ich habe das in ein Subselect eingepackt und diese Unterabfrage S2 aufgerufen, weil es Schritt 2 war.

%Vor%

Die Berechnung von CC und BPO ist dann relativ einfach. Das obige wird eine Unterabfrage namens S3.

Beachten Sie, dass ich hier Fehler durch Division durch Null verhindert habe.

%Vor%

Ok, ein bisschen experimentieren hier, um SQL-Monatsfunktionen, wie man berechnet, wie viele Monate noch übrig sind, und 1. dieses Jahres.

%Vor%

Nun können wir die Y-Zahl berechnen - das ist wieder die ganze Tabelle1, aber gefiltert für die letzten 36 Monate, dann berechnet man den Monatsdurchschnitt. Implizite Fehler können sich hier einschleichen, wenn Sie dies in der Mitte des Monats tun - es bricht nicht an Monatsgrenzen, es dauert die letzten 3 Jahre, nicht die letzten 36 abgeschlossenen Monate, ausgenommen diesen Monat.

Beachten Sie, dass ich count (*) als Gleitkommazahl darstellen musste, da es sonst eine ganze Zahl ist, die in der Division auf 0 gerundet wird.

%Vor%

Und wir berechnen Fehler in diesem Jahr auf die gleiche Weise.

%Vor%

Nun können wir die obigen drei Schritte kombinieren, um eine Tabelle mit Y zu erhalten, und das aktuelle Jahr schlägt fehl. Beachten Sie die ISNULL dort mit dem LINKEN JOIN, um Seiten zu kompensieren, die in diesem Jahr keine Ausfälle haben.

%Vor%

So können wir endlich die Prognose berechnen.

%Vor%

Ok, plötzlich müssen wir das Startdatum und das Enddatum erneut eingeben. Sie befinden sich in Tabelle 2, die wahrscheinlich auch die Hauptliste von Site + Code darstellt. Also lasst uns das primär machen und unsere Berechnung mit Links verbinden. Wir berechnen auch den Websitetyp.

Dies ist Ihre detaillierte Berechnung für jede Site + Code.

%Vor%

Von dort können wir ganz einfach die Durchschnittswerte erstellen.

%Vor%

Oder Sie könnten eine Tabelle mit der detaillierten Berechnung füllen und dann den Mittelwert berechnen, anstatt meine endgültige Berechnung zu verwenden.

Ich werde dir die letzte Verbindung überlassen.

    
GregHNZ 27.06.2013, 09:35
quelle

Tags und Links