MSQL подсчитывают победителей и включают 0 победителей - PullRequest
0 голосов
/ 11 ноября 2019

У меня проблема с моим запросом. Я только недавно запустил SQL. В первой таблице ниже я хочу подсчитать количество команд, которые выиграли больше всего, и включить команды, которые также имеют нулевые победы. Имена таблиц выделены красным.

TABLE NAMES

Я хочу, чтобы результат моего запроса выглядел как второе изображение, которое я прикрепил, или как

Phenix  2
StarWar 1
Strack  1
Serious 0
Apolo   0
APTX    0
Poki    0

Final result

Пока что мой лучший запрос:

   SELECT t1.Team_Name
        , COUNT(winner) AS TotalWins
     FROM result r 
LEFT JOIN team_1 t1
       ON r.Team1_ID = t1.Team1_ID
 GROUP BY winner

          UNION

   SELECT t2.Team_Name
        , COUNT(distinct winner) AS TotalWins
     FROM result r 
LEFT JOIN team_2 t2
       ON r.Team2_ID = t2.Team2_ID
 GROUP BY Winner
 ORDER BY TotalWins DESC;

Результат, который я получил, не включает команды с нулевым выигрышем, он просто добавляет 1 для всех.

Ответы [ 2 ]

1 голос
/ 11 ноября 2019

объедините ваши team таблицы прежде, чем присоединиться к таблице результатов, затем вы можете использовать функцию sum(), чтобы получить total wins.

select t1.Team_Name, sum(case when coalesce(t2.battle_no, '') = '' then 0 else 1 end) as TotalWins
from (select Team_Name, team1_id as id from team_1
    union all 
    select Team_Name, team1_id as id from team_1) t1
left join result t2 on t2.Team2_ID = t1.team1_id or t2.Team1_ID = t1.team1_id
0 голосов
/ 11 ноября 2019

изменить левый стол из результата в команду для обеих команд

SELECT t1.Team_Name, COUNT(winner) AS TotalWins
     FROM team_1 t1 LEFT JOIN  result r 
    ON r.Team1_ID = t1.Team1_ID
    GROUP BY winner
    UNION
    SELECT t2.Team_Name, COUNT(distinct winner) AS TotalWins
    FROM team_2 t2 LEFT JOIN  result r
    on r.Team2_ID = t2.Team2_ID
    GROUP BY Winner
    ORDER BY TotalWins DESC
...