![]() |
Ranking von Weitenangaben ermitteln
Hallo Wissende,
wir ermitteln diverse Weiten beim Sport und geben die Daten in ein AdvStringgrid ein. Dort kann man die Spalten schon nach Wertigkeiten absteigend Sortieren lassen. Nun müssen wir aber noch den Rang ermitteln. Ich glaube, dass hier wahrscheinlich Rekursion zum Einsatz kommt - richtig? Hätten alle einen anderen Wert, wäre es wohl einfach, aber es könnte auch folgende Datenlage zugrunde liegen: 320m 315m 315m 305m 299m 299m Dann hätten wir eine Platzierung von 1, 2, 2, 4, 5, 5. Könnt ihr mir verraten, wie ich die Schleife programmieren muss? |
AW: Ranking von Weitenangaben ermitteln
So schwer ist das doch nicht?
Absteigend sortierte Liste, fängst bei 1 an, weißt das nacheinander deinen Zeilen zu und dann immer um 1 hochzählen, wenn der vorherrige Wert nicht dem aktuellen Wert entspricht.
SQL-Code:
Ins OVER noch ein GROUP BY wert oder DISTINCT rein.
rank() OVER (ORDER BY wert) as ranking
-- oder row_number() OVER (ORDER BY wert) as ranking ![]() Guck in die Doku deines DBMS ... sowas gibt es fast überall. Im Prinzip die bestehenden Werte sortieren, gruppieren (gleiche zusammenfassen) und dann den Index aus dieser Liste als Ranking verwenden. |
AW: Ranking von Weitenangaben ermitteln
Jo vielen Dank erstmal.
Ich schau´s mir nochmal an. Mit SQL und DB hat das Ganze aber nichts zu tun. Wir geben die Daten direkt in ein Stringgrid ein. |
AW: Ranking von Weitenangaben ermitteln
Zitat:
Sherlock |
AW: Ranking von Weitenangaben ermitteln
Zitat:
Zitat:
|
AW: Ranking von Weitenangaben ermitteln
Ok, ich widerspreche Dir auf keinen Fall, aber es ist so, dass wir die Daten in das Stringgrid eingeben, weil es einfach nicht anders geht, schnell und einfach ist.
OOP war noch nie meine Stärke und ich tu mich gerade echt schwer extra eine Klasse aufzusetzen, nur um die Daten aus dem Stringgrid darin zu überführen... Ich werds schon irgendwie hinbekommen. Einen Rang zu ermitteln, wenn es keine Dopplung gibt ist einfach. Ich muss nur noch für den Spezialfall vorsorgen. |
AW: Ranking von Weitenangaben ermitteln
Zitat:
Ich schau mal, bin gerade dran... |
AW: Ranking von Weitenangaben ermitteln
Nicht schön, aber damit gehts schon mal. Die doppelt vorhandenen Ränge werden nicht angezeigt. Von daher stimmt die Zählweise schon.
Danke für den Denkanstoß...
Delphi-Quellcode:
//Rang bestimmen
iRang := 0; iWidth := 0; iLastWidth := 0; for i := 1 to FrameVorrundeOutput1.grdPlayers.RowCount -1 do begin iWidth := StrToIntDef(FrameVorrundeOutput1.grdPlayers.Cells[2,i],0); if iWidth > 0 then begin if iWidth = iLastWidth then begin inc(iRang); end else begin inc(iRang); FrameVorrundeOutput1.grdPlayers.Cells[0,i] := IntToStr(iRang); end; iLastWidth := iWidth; end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:38 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz