automatische Rangliste
in unserem Billardverein werden jährlich 4 Vereinsmeisterschaften in Turnierform ausgespielt (Disziplinen: 8-Ball, 9-Ball, 10-Ball und 14&1).
Hierzu bestehen drei Tabellen ("Player", "Chronik" und "VMs"). "Player" ist jeweils 1:N zu "VMs" und "Chronik" und verknüpft. "VMs" jeweils N:1 zu "Player" und "Chronik" verknüpft und ist zusätzlich in Komposition zu "Chronik". "Chronik" ist N:1 mit "Player" verknüpft.
In der Tabelle "Player" sind alle Spielernamen vermerkt. in der Tabelle "Chronik" sind die jeweiligen Vereinsmeisterschaften nach Disziplin angelegt. In der Tabelle "VMs" die Verknüpfungen zum Player und zur Chronik, sowie mittels eines Auswahlfeldes der Rang, den der Spieler bei der Vereinsmeisterschaft erzielt hat. Je nach Auswahl wird in einem Berechnungsfeld "Punkte" die Punktzahl ermittelt.
Nach diversen Vereinsmeisterschaften, verteilt über diverse Jahr, ergibt sich folgendes exemplarisches Gesamtbild der Spieler sortiert nach erzielten summierten Punkten:
Rang, Name, Punkte:
1) Paul 210
2) Peter 201
3) Hauke 194
3) Karl 194
3) Sven 194
6) Ralf 177
7) Hardy 169
Aufgabe:
Automatische Erstellung einer Rangliste gemäß der summierten Punkte. Dabei sollen Punktegleichstände den gleichen Rang (siehe obige Liste) erhalten!
Weiß jemand Rat?
Gruß
Tacho
4 Antworten
-
Hallo Tacho,
das Feld "Rand" als Berechnungsfeld. Die Formel:
let AA := Punkte;
let BB := Name;
cnt(select VMs where Punkte > AA) + cnt(select VMs where Punkte = AA and Name <= BB)
Das Feld sollte als Nummer bleiben, damit die Sortierung funktioniert. Wenn du die Klammer dahinter setzen möchtest, kannst du diese beim Zahlenformat als Einheit setzen -
Ahoi Leo
vielen Dank für Deine Hilfe!
Leider klappte es nicht so richtig. Habe jetzt auf der Tabelle "Player" eine Berechnung hinzugefügt, die die Gesamtzahl des vom Spieler erziehlten Punkte anzeigt.
Füge ich jetzt in der Spaltenansicht der Tabelle "Player" eine neue Spalte "Rangliste" hinzu mit angepasster Funktion:
let AA := 'Ges.Pkte VM';
let BB := Nachname;
cnt(select Player where 'Ges.Pkte VM' > AA) + cnt(select Player where 'Ges.Pkte VM' = AA and Nachname <= BB)
Dabei erstellt er mir eine Rangliste von 1 bis 90, was genau der Anzahl der unique Spielern entspricht, die über die Jahre teilgenommen haben.
Leider werden punktgleiche Ergebnisse nicht mit dem selben Ranglistenplatz wiedergegeben.
Hast Du eine Idee, warum?
Gruß
Tacho -
Hallo Tacho,
da habe ich deine Frage nicht richtig gelesen und habe extra die Sortierung nach punkten und dann noch alphabetisch nach Nahmen. In deinem Fall wäre die Formel:
---
let AA := 'Ges.Pkte VM';
cnt(select Player where 'Ges.Pkte VM' < AA) + 1---
Grüße
Leo
-
Hallo Leo,
glaub ehr, dass ich mich manchmal bissl umständlich ausdrücke ;-)
Wenn man Deine letzte Formel verwendet, scheint das "<" ein ">" sein zu müssen.
Damit funktioniert es dann prima, danke!Gruß
Tacho
Content aside
- vor 6 JahrenZuletzt aktiv
- 4Antworten
- 2057Ansichten