zapytanie SQL prośba o pomoc - początkujący

0

Przerasta mnie to zapytanie :( proszę o pomoc.

Mam takie w PSQL:
SELECT DISTINCT playername
, round(AVG(CASE WHEN didvpip THEN 1 ELSE 0 END)*100,1)
FROM players as p , playerhandscashkeycolumns as g
where p.player_id = g.player_id AND g.positiontype_id = 5 AND g.preflopaction_id = 0
GROUP BY playername order by playername ;

Wynikeim tego jest tabela z dwoma kolumnami w pierwszej jest lista 'playername' a drugiej średnia z uwzględnieniem .positiontype_id = 5, potrzebuje dodać kolejne dwie kolumny z positiontype_id równą 1 i następną positiontype_id równą4. Tylko że nie potrafię i kilka godzin szukałem podobnego czegoś i nie dałem rady. Wiem, że to abc lecz nie dla mnie.
Z góry dziękuję.

0

Troche niejasno tlumaczysz, ale zdaje sie ze chodzi ci o cos takiego jak ponizej.
Dla wyjasnienia tego kodu. Podobnie jak u Ciebie sa dwie tabele polaczone kluczami.
Pierwsze cztery kolumny "wyswietlam" z glownego selecta.
Zeby uzyskac srednia przy innym warunkach korzystam z inner join z podzapytaniem (ten sam select jk glowny tylko z innymi warunkami).
Zeby nie bylo bledu musisz wszystkie niezagregowane kolumny na koncu umiescic w group by, takze w podzapytaniu.
Korzystaj z aliasow do kolumn.

       SELECT m.Machine
                , ROUND(AVG(CASE WHEN m.Bill <> 1 THEN 1 ELSE 5 END) *100, 1) srednia
                , m.BKM
                , m.Eart
                , tb.MachineAgain
               ,  tb.srednia_2
         FROM TbMachine m
 INNER JOIN TbMachineKanal mk
            ON m.Machine = mk.Machine
--inner join podobnego selecta jak  glowny, tylko z innymi warunkami
--u ciebie sa to inne positionstype_id
INNER JOIN (SELECT  m1.Machine MachineAgain
                          , ROUND(AVG(CASE WHEN m.Bill <> 1 THEN 1 ELSE 5 END) *100, 1) srednia2
                    FROM TbMachine m1
               GROUP BY  m1.Machine
                  WHERE m.LKz = 1
                      AND m.Eart = 0   ) tb
            ON tb.MachineAgain = m.Machine
       WHERE m.LKz = 0
          AND m.Eart = 0
  GROUP BY m.Machine
              , m.BKM
              , m.Eart
              , tb.MachineAgain

1 użytkowników online, w tym zalogowanych: 0, gości: 1