Hirdetés

Új hozzászólás Aktív témák

  • Apollo17hu
    őstag

    Hali

    Van egy táblám ami sporteredményeket tartalmaz(versenyekre lebontva). Sorba akarom rendezni az összpontszám alapján ami megy is ORDER BY SUM(pont), azonban ha ugyanannyi pontjuk van az illetőknek akkor legjobb helyezés szerint tegye sorba ez is megvan még MIN(helyezes), de mi van akkor ha itt is ugyanannyi pontja van két versenyzőnek és a legjobb eredményük is ugyanaz? hogy lehet azt beleiktatni, hogy a 2. legjobb eredmény szerint is rendezzen sorba?

    SELECT jatekos,COALESCE(SUM(Pont),0)
    FROM `fordulo`
    group by jatekos
    order by sum(pont) desc,min(helyezes)

    Szélsőséges esetben előfordulhat olyan holtverseny is, ahol két versenyző az összes sportágat tekintve azonos helyezésekkel rendelkezik. Ekkor csak pénzfeldobás (--> random szám generálás) dönthet. Vagy létrehozol egy külön táblát, amiben a fair-play értékeket vezeted. :D

    Visszatérve a problémádhoz talán megoldás lehetne, ha játékosonként a játékosok helyezéseit sorbarendezve, összefűzve letárolnád, és ennek a minimumát vennéd a helyezések minimuma helyett. Pl.:

    egyik játékos helyezései:

    1, 2, 2, 4, 5, 5, 5 --> 1224555

    másik játékos helyezései:

    1, 2, 3, 3, 3, 3, 3 --> 1233333

    Oracle-ben ehhez a listagg() függvényt tudod használni. Valahogy így:

    listagg(helyezes) WITHIN GROUP (ORDER BY helyezes) OVER (PARTITION BY jatekos)

Új hozzászólás Aktív témák