我正在尝试从足球桌上生成一个数据。
下表中突出显示了所需的数据。
需要生成的数据如下所示。
现在我已经做了几天了,我已经设法取得了一些进展,尽管我离期望的输出还很远。
SET @rownum := 0;
SELECT (@rownum := @rownum + 1) as matchNo,
(SELECT
CASE
WHEN home_score > away_score AND home_team_name ='Barcelona' THEN 3
WHEN home_score < away_score AND away_team_name = 'Barcelona' THEN 3
WHEN home_score > away_score AND away_team_name = 'Barcelona' THEN 0
WHEN home_score < away_score AND home_team_name = 'Barcelona' THEN 0
WHEN home_score = away_score AND home_team_name = 'Barcelona' THEN 1
WHEN home_score = away_score AND away_team_name = 'Barcelona' THEN 1
END) AS outcome,
(SELECT SUM(outcome) / 3) AS winrate
FROM matches
ORDER BY matches.match_id
我得到的结果如下
我尝试做的是将winrate移动为第二个字段,将outcome移动为最后一个字段,显然得到了正确的winrate。提前感谢大家。
1条答案
按热度按时间nbewdwxp1#
以下是我使用的数据集(下次请使用文本而不是图片,图片无法复制/粘贴):
您需要像您一样使用更多的计数器来计算胜率。此请求将计算总胜率和平均胜率以及点数:
现在,您只需将其 Package 在另一个查询中,即可按所需的顺序获得所需的列: