AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Ranking von Weitenangaben ermitteln

Ein Thema von torud · begonnen am 15. Aug 2017 · letzter Beitrag vom 15. Aug 2017
Antwort Antwort
torud

Registriert seit: 26. Jul 2002
Ort: Sachsen
1.198 Beiträge
 
Delphi XE5 Professional
 
#1

Ranking von Weitenangaben ermitteln

  Alt 15. Aug 2017, 10:29
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?
Danke
Tom
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#2

AW: Ranking von Weitenangaben ermitteln

  Alt 15. Aug 2017, 11:27
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:
rank() OVER (ORDER BY wert) as ranking
-- oder
row_number() OVER (ORDER BY wert) as ranking
Ins OVER noch ein GROUP BY wert oder DISTINCT rein.
https://support.microsoft.com/de-de/...-sql-statement
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.
$2B or not $2B
  Mit Zitat antworten Zitat
torud

Registriert seit: 26. Jul 2002
Ort: Sachsen
1.198 Beiträge
 
Delphi XE5 Professional
 
#3

AW: Ranking von Weitenangaben ermitteln

  Alt 15. Aug 2017, 13:20
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.
Danke
Tom
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.800 Beiträge
 
Delphi 12 Athens
 
#4

AW: Ranking von Weitenangaben ermitteln

  Alt 15. Aug 2017, 13:30
Mit SQL und DB hat das Ganze aber nichts zu tun. Wir geben die Daten direkt in ein Stringgrid ein.
Dadurch, daß Daten und Darstellung ja getrennt zu halten sind, mußt Du Dir aber Gedanken über ein Datenmodell machen, egal wie simpel es ist. Denn in dem Grid speichert man nichts, man zeigt nur an.

Sherlock
Oliver
Geändert von Sherlock (Morgen um 16:78 Uhr) Grund: Weil ich es kann
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#5

AW: Ranking von Weitenangaben ermitteln

  Alt 15. Aug 2017, 13:42
Mit SQL und DB hat das Ganze aber nichts zu tun. Wir geben die Daten direkt in ein Stringgrid ein.
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.
Alternativ eine zweite sortierte Liste mit den Werten (ohne Doppelung) und dann bekommt man drüben via IndexOf+1 das Ranking raus.
$2B or not $2B
  Mit Zitat antworten Zitat
torud

Registriert seit: 26. Jul 2002
Ort: Sachsen
1.198 Beiträge
 
Delphi XE5 Professional
 
#6

AW: Ranking von Weitenangaben ermitteln

  Alt 15. Aug 2017, 13:43
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.
Danke
Tom
  Mit Zitat antworten Zitat
torud

Registriert seit: 26. Jul 2002
Ort: Sachsen
1.198 Beiträge
 
Delphi XE5 Professional
 
#7

AW: Ranking von Weitenangaben ermitteln

  Alt 15. Aug 2017, 13:44
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.
Alternativ eine zweite sortierte Liste mit den Werten (ohne Doppelung) und dann bekommt man drüben via IndexOf+1 das Ranking raus.[/QUOTE]

Ich schau mal, bin gerade dran...
Danke
Tom
  Mit Zitat antworten Zitat
torud

Registriert seit: 26. Jul 2002
Ort: Sachsen
1.198 Beiträge
 
Delphi XE5 Professional
 
#8

AW: Ranking von Weitenangaben ermitteln

  Alt 15. Aug 2017, 13:49
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;
Danke
Tom
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:58 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz