сравнить значения, отсортировать их и определить, что является более выгодным - PullRequest
0 голосов
/ 04 июня 2019

Для начала у меня есть база данных, основанная на спортивных ставках. У меня есть одна таблица под названием «МАТЧИ» (id_match / sport_id / League_id / team / соперник / результат).

Я использую следующий запрос:

SELECT leagues.name,
   COUNT(matches.League_id) AS times_bet,
   COUNT(case when matches.result = 'W' then 1 else null end) AS times_won,
   AVG (matches.result = 'W')*100 AS winrate,
   nations.name as nation,
   sports.name as sport
   FROM matches,leagues,sports,nations
   WHERE matches.League_id=leagues.id and leagues.Sport_id=sports.id and 
   leagues.Nation_id=nations.id
   GROUP BY matches.League_id

И результаты, которые я генерирую:

+---------------------------------------------------------+ 
| name | times_bet | times_won | winrate | nation | sport |  
+---------------------------------------------------------+ 
|  xxx |   100     |     65    |   65%   |  xxxxx |  xxx  |
|  aaa |   70      |     49    |   70%   |  bbbbb |  ccc  |
|  yyy |   65      |     50    |   77%   |  bbbbb |  ccc  |
|  eee |   7       |     7     |   100%  |  ppppp |  hhh  |

Проблема возникает, когда я пытаюсь выяснить, какая лига более благоприятна.

Если я упорядочу запрос по winrate и time_bets, самая выгодная лига будет последней, а я этого не хочу.

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

Лига с 50 прогнозами и 80% выигрышей является более благоприятной, чем лига с 5 прогнозами и 100% победой. Это то, что я имею в виду.

Я приведу наглядный пример того, что я хотел бы видеть:

+---------------------------------------------------------+ 
| name | times_bet | times_won | winrate | nation | sport |  
+---------------------------------------------------------+ 
|  yyy |   65      |     50    |   77%   |  bbbbb |  ccc  |
|  aaa |   70      |     49    |   70%   |  bbbbb |  ccc  |
|  xxx |   100     |     65    |   65%   |  xxxxx |  xxx  |
|  eee |   7       |     7     |   100%  |  ppppp |  hhh  |

Если кто-нибудь знает какой-либо способ сделать это, я был бы благодарен. Заранее спасибо

Ответы [ 2 ]

0 голосов
/ 04 июня 2019

Что именно вы подразумеваете под «более выгодным»?

Например, если мы предположим, что все ставки имеют одинаковые шансы, если игрок распределяет сумму, которую он хочет сделать равным, среди всех ставок этой лиги, то наиболее выгодной будет та, которая имеет самый высокий коэффициент выигрыша.

Но если игрок вкладывает фиксированную сумму в каждую ставку, все меняется.

Например, если мы предположим, что для всех ставок шансы на выигрыш равны 2,00, то есть на каждый сделанный вами доллар вы получаете 2 доллара назад, когда выигрываете, тогда, если игрок вкладывает один доллар на каждую игру в каждой лиге,более выгодная лига для него была бы уууу, потому что он получил бы обратно 2 * 50 = 100 долларов при общей ставке 65 долларов, так что он получил бы 35 долларов прибыли от этой лиги.Хотя у лиги eee выше выигрыш, у нее значительно меньше ставок, поэтому он получил бы обратно 2 * 7 = 14 долларов из 7-долларовых ставок с общей прибылью всего 7 долларов.

В этом примере я предположил, что средние коэффициенты ставки для прогнозов на выигрыш являются фиксированным числом и одинаковым для каждой лиги.Что, очевидно, не так. Вы должны найти средние шансы прогнозов на победу для каждой лиги. Например, если у лиги есть три прогноза на выигрыш с коэффициентами 2,00,3,00 и 4,00 соответственно, вы должны взять среднее значение (2 + 3 +4) / 3 = 3 и используйте это значение.

Примерно так:

ORDER BY (times_won*avg_odds_of_winning_predictions)-times_bet DESC

0 голосов
/ 04 июня 2019

Добавьте следующее в конец запроса:

ORDER BY times_bet*winrate DESC

Этот порядок вывода по выражению в порядке убывания.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...