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

  • Jim74
    nagyúr

    Van egy táblád, amiben van egy menet_id, egy fogadas_id, meg egy nyert mező?

    8x összejoinolod önmagával, menet_id = menet_id, következő fogadas_id = előző fogadas_id+1, nyert mindig 1?

    select f1.menet_id,
    f1.fogadas_id kezdo_fogadas_id
    from fogadas f1
    join fogadas f2
    on f2.menet_id = f1.menet_id
    and f2.fogadas_id = f1.fogadas_id + 1
    and f2.nyert = 1
    join fogadas f3
    on f3.menet_id = f1.menet_id
    and f3.fogadas_id = f1.fogadas_id + 2
    and f3.nyert = 1
    join fogadas f4
    on f4.menet_id = f1.menet_id
    and f4.fogadas_id = f1.fogadas_id + 3
    and f4.nyert = 1
    join fogadas f5
    on f5.menet_id = f1.menet_id
    and f5.fogadas_id = f1.fogadas_id + 4
    and f5.nyert = 1
    ...
    where f1.nyert = 1;

    Köszi :R és Apollo17hu Neked is.
    Igen ilyen oszlopok vannak. Az a baj, hogy egy meneten belül a fogadások száma eltérő lehet, így nem tudom, hogy hányszor kellene joinolnom, vagy hány extra mezőt kellene képeznem.
    Valamilyen windowed function kéne, ami egy kumulatív sum--ot, vagy sorszámozást képezne egy menet belül, ha az egymást követő fogadások nyerőek, de nullát venne fel, amikor jön egy vesztes fogadás és a következő nyerő fogadásnál egyről indul.
    Ciklust nem szeretnék írni rá, csak worst case, mert nem igazán hatékony szerintem SQL-ben.
    Végső cél, hogy meg tudjam mondani, hogy melyik volt a leghosszabb nyerő szériájú menet.

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