mysql - 比较值,对它们进行排序并确定哪个更有利

标签 mysql sql

首先,我有一个基于体育博彩的数据库。我有一张名为“MATCHES”的表(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  |

当我试图找出哪个联赛更有利时,问题就出现了。

如果我按胜率和 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.00,那么您每投注 1 美元,获胜后您将获得 2 美元,那么如果玩家在每个联赛的每场比赛中投入 1 美元,则更有利的联赛对他来说是 yyy,因为他总共投注 65 美元,会得到 2*50=100 美元,因此他将从该联赛中获得 35 美元的利润。联盟eee虽然胜率较高,但投注金额明显减少,所以他总共7美元的投注,可以拿回2*7=14美元,总利润只有7美元。

在示例中,我假设获胜预测的平均投注赔率是固定数字,并且每个联赛都相同。显然情况并非如此。您应该找到每个联赛获胜预测的平均赔率。例如,如果一个联赛有三个获胜预测,赔率分别为 2.00、3.00 和 4.00,您应该取平均值,即 (2+3+ 4)/3=3 并使用该值。

类似这样的事情:

ORDER BY (times_won*avg_odds_of_having_predictions)-times_bet DESC

关于mysql - 比较值,对它们进行排序并确定哪个更有利,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56436668/

相关文章:

php - Mysql 获取记录常见记录以及不常见记录

mysql - 存储 mysql 表最近更改的最有效方法是什么

sql - 如何返回重复值的空单元格并仅保留不同的单元格?

sql - 我如何使用窗口函数 - PostgreSQL 中的困难案例

php - Laravel - 通过关系对象的属性对集合数组进行排序

mysql - order by 子句如何在 mysql 中工作,排序显示奇怪的行为

mysql - 获取mysql中索引的所有值

mysql - 使用子查询的查询需要返回原始查询中的所有行(即使子查询返回空)

c# - 存储过程中 SQL Server 查询的性能问题

android - 使用 SSL 和 SQL 支持为 Android 构建 Qt 5.12 LTS