0

Auswertung pro Jahr

Servus in die Runde,

ich habe die Ergebnisse vom Bowling pro Spiel aufgelistet. Ich möchte nun ein Durchschnittsergebnis pro Jahr, welche Art von Spiel (Turnier oder Training) oder auch die Auswertung für die Spiele auf den verschiedenen Bahnen haben. Ein gesamtes Durchschnittsergebnis von allen Spielen für jeden Spieler habe ich schon avg(Spiele.'Spiel 1', Spiele.'Spiel 2,...). Aber damit komme ich nicht weiter.

Ich habe es mit Select  -->  avg((select Spiele)[Datum = year(2019)]) oder auch if then else versucht, aber ich bekomme entweder keine Ergebnisse oder es funktioniert überhaupt nicht. Das Datum wird mit einem normalen Datumsfeld eingegeben, Spielorte und Spielart über Auswahlfelder.

Wo ist mein Denkfehler?? Kann mir bitte jemand helfen.

Vielen Dank für die Hilfe schon einmal vorab.

LG

Carlo

Bowl Stats

5 Antworten

null
    • Carlo_Luft
    • vor 4 Jahren
    • Gemeldet - anzeigen

    aus Datenschutzgründen fehlt die erste Spalte mit den jeweiligen Spielernamen ;-)

    • Ninox-Professional
    • planoxpro
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Hallo Carlo, wenn man für den Durchschnitt pro Zeile/Datensatz im Datenformular der Tabelle "Spiele" ein Berechnungsfeld erstellt, dann kann man auf diesen Wert immer wieder zugreifen.

     

    Ich nenne das Berechnungsfeld hier mal "DS". Funktion zur Durchschnittsberechnug wäre: 

     

    avg('Spiel 1', 'Spiel 2', 'Spiel 3')

     

    Und dieses Feld DS könnte man nun auf vielfältige Weise auswerten. Zum Beispiel über alle Datensätze hinweg:

     

    avg((select Spiele).DS)

     

    Oder auch mit Filter auf ein Jahr:

     

    avg((select Spiele where year(Datum) = 2019).DS)

     

    Oder habe ich das Problem falsch verstanden?

    • Carlo_Luft
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Vielen Dank für die schnelle Antwort. Das Problem hast du schon richtig verstanden, aber es funktioniert trotzdem nicht so wie gewünscht.

    Prinzipiell habe ich bereits ein Feld in der Tabelle "Spiele", in dem der Durchschnitt pro Spieltag ausgewertet wird. Ein weiteres Feld, in der Tabelle "Kontakte" gibt mir den Gesamtdurchschnitt für den jeweiligen Spieler. Aber ich bekomme keinen Filter vorgesetzt, der mir das Jahr oder auch die Spielart selektieren lässt.

    Ich habe das mal so gemacht, wie du das geschrieben hast: avg((select Spiele where year(Datum) = 2019).Kontakte.'Ø Total'), leider ohne Erfolg. Es wird zwar etwas berechnet, aber die da berechneten Wert können nicht korrekt sein. Wahrscheinlich wird dann der Durchschnitt von einem Durchschnitt ausgerechnet und das ist nicht das Gleiche wie der Durchschnitt aller Einzelwerte.

    Wenn ich nach der Spielart selektieren will: avg(select Spiele where 'Spielart' = 1).Kontakte.'Ø Total') (Spielart ist ein Auswahlfeld, 1= Training, 2= BBeV, ...) stehen dann bei allen Spielern die gleichen werte drin.

    Stehe vollkommen auf dem Schlauch. :-(

    Danke für die Hilfe

    • Ninox-Professional
    • planoxpro
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Kontakte = Spieler? Sind die Werte 'Spiel 1' bis 'Spiel 10' aus einer Untertabelle oder 10 einzelne Datenfelder der Tabelle "Spiele"?

     

    Wenn die Berechnung des Durchschnitts vom Durchschnitt mathematisch so nicht korrekt ist, dann würde ich bei jedem Datensatz der Tabelle "Spiele" die Anzahl der Spiele und die Gesamtpunktzahl berechnen. Man hätte nebenbei auch noch mehr Auswertungsmöglichkeiten. Bei zehn Einzelfeldern wäre das zwar ein bisschen Tipparbeit, aber man braucht es ja nur einmal. Für die Anzahl der Spiele ("Spiele") könnte das bspw. so aussehen (bei drei Feldern):

     

    let myZ := 0;
    if 'Spiel 1' then myZ := myZ + 1 end;
    if 'Spiel 2' then myZ := myZ + 1 end;
    if 'Spiel 3' then myZ := myZ + 1 end;
    myZ

     

    Die Gesamtpunktzahl ("Punkte"):

     

    'Spiel 1' + 'Spiel 2' + 'Spiel 3'

     

    Dann kann man immer auf die Werte "Punkte" und "Spiele" zugreifen. Wie genau, hängt auch davon ab, von wo aus die Abfrage erfolgt. Wenn man bspw. in der Tabelle "Kontakte" (= Spieler) den Durchschnitt aller Trainingsspiele (Art = 1) dieses Kontaktes/Spielers berechnen wollte:

     

    let myA := 1;
    let myX := Spiele[Art = myA];
    round(sum(myX.Punkte) / sum(myX.Spiele), 0)

     

    Und natürlich kann man auch mehrere Filter-Kriterien kombinieren. So ließe sich bspw. auch noch das Jahr hinzufügen:

     

    let myJ := 2019;
    let myA := 1;
    let myX := Spiele[year(Datum) = myJ and Art = myA];
    round(sum(myX.Punkte) / sum(myX.Spiele), 0)

     

    Hilft das weiter?

    • Carlo_Luft
    • vor 4 Jahren
    • Gemeldet - anzeigen

    VIELEN DANK!!!

    Eine Kombination deiner Angaben und eine richtige Zuordnung zu meinen Feldern hat letztendlich die Lösung gebracht. Jetzt komme ich auch um einiges weiter.

    Großes Lob meinerseits.