Ich habe die folgenden Tabellen
Table Farm
%Vor%Table Gate
%Vor%Tabellenursprung
%Vor%Tischvorrat
%Vor%Tabellenergebnisse
%Vor%Annotierte Ergebnistabelle: Wie oben ^
%Vor%Erforderliche Berechnungen:
ALLE einzigartigen Fälle sind
Fall {H, M}: H = 80 M = 20
Weitere Erklärung
GATE
, voll zufrieden können 100 Punkte erhalten
Q4
hat 3 Sätze von 6 GATES
; Nur ein GATE
Satz muss satsifiziert werden (eine Punktzahl haben). Q4
hat den Fall {H, M, L} was H = 70 bedeutet; M = 20; L = 10 Dies würde zu (70 * 100%) + (20 * 50%) + (10 * 100%) = 90 führen (siehe oben in den Annotationen der Ergebnistabelle)
Wenn wir eine Abfrage ausführen, um den Tabellen und Daten einen Sinn zu geben, wird sie wie folgt aussehen
%Vor%Wunschergebnisse
%Vor%
Da origin
eine stock
hat, die aus 3 verschiedenen farms
besteht und diese farms
jede 6 gates
. Solange ein gate
-set (numerisch übereinstimmend gates
) mit einem Wert von SOME bewertet wird, können wir den gesamten gefundenen STOCK
vollständig berücksichtigen. Nur so kann ein stock
als 100 betrachtet werden.
Darüber hinaus und um es noch einmal zu sagen: STOCK
Q4 hat Fall: {H, M, L} und% gate (4)
wurde bis zu einem gewissen Grad gefunden. gate
4 hat die Punktzahl (100% * H) + (50% * M) + (100% * L) was gleich (70 * 100%) + (20 * 50%) + (10 * 100%) = ist 90
Daher: (Von oben genommen)
%Vor%QED
Was ich also mit brauche, ist die Erstellung der Unterabfrage / Subselect, damit diese Berechnung funktioniert. Ich habe alles in dem obigen Szenario (zusammen mit einer laufenden Abfrage, mit der ich gearbeitet habe) im folgenden SQL-Fiddle-Link eingerichtet.
Vielen Dank stackoverflow Community.
Hier ist die Abfrage, an der ich gearbeitet habe. Die Ergebnisse unterscheiden sich jedoch geringfügig von denen, die Sie in Ihrer Frage gepostet haben:
%Vor%Ergebnis:
%Vor%Lass es mich wissen, wenn das den Trick macht.
Ich würde Ihre ursprüngliche Abfrage nehmen, um die zweitletzte Tabelle zu erhalten und die Select
zu ändern, indem Sie distinct
hinzufügen (gefunden hier ) und wählen Sie nur Herkunft, Bestand und die Berechnung für den Score. Wenn der Score zum Beispiel der Durchschnitt aller Werte ist, wäre dies AVG(Score)
, wobei Score
das wäre, was Sie in der ursprünglichen Abfrage abgerufen haben. Wenn Sie nur eine kleine Teilmenge der Elemente mit demselben Ursprung und demselben Bestand verwenden möchten, um den Score zu berechnen, würde ich eine Unterabfrage verwenden, bei der die Herkunfts- und Stick-IDs in der Auswahl übereinstimmen:
Hoffe, das hilft.