Получение% выигрыша из таблицы, содержащей "Победители" и "Проигравшие" - PullRequest
1 голос
/ 16 июня 2020

Я работаю с базой данных SQLite, где я храню матчи / драки между игроками следующим образом:

matchId [int] победитель [текст] проигравший [текст]

Я сделал запросы, которые суммируют, сколько раз игрок выигрывал бой, а другой - сколько боев проиграл игрок. Но есть ли способ в SQL ввести это, чтобы я мог найти% выигрыша непосредственно из базы данных, или мне нужно вычислить это где-то еще? Нет проблем с вычислением этого в другом месте, но я был заинтригован, чтобы выяснить, можно ли / как это сделать только в SQL.

То, что я пытаюсь достичь, в основном:

SELECT winner, COUNT(winner) as Wins FROM Fights GROUP BY winner 

делится на

SELECT loser, COUNT(loser) as Losses FROM Fights GROUP BY loser;

для каждого игрока, который в этой таблице является либо «победителем», либо «проигравшим». У меня также есть таблица (Players), в которой все эти игроки считаются «игроками», которых можно использовать для этой работы.

1 Ответ

1 голос
/ 16 июня 2020

Вы можете использовать union all и агрегирование:

select player, avg(win) as win_ratio
from (
    select winner as player, 1.0 as win from fights
    union all
    select loser, 0 from fights
) t
group by player

Это дает вам для каждого игрока, участвовавшего хотя бы в одном бою, десятичное число от 0 до 1, которое представляет победу. соотношение.

...