【发布时间】:2020-10-27 08:49:17
【问题描述】:
我有一个表results,其中包含以下重要列:
-
f_team1(VARCHAR) -
f_team2(VARCHAR) -
f_player1(VARCHAR) -
f_player2(VARCHAR) -
f_total_ftg(INT)
team 可以在 f_team1 或 f_team2 列中
player 可以在 f_player1 或 f_player2 列中
我正在尝试为每个玩家找到 f_total_ftg 的 AVG,然后获取该 AVG 并将其应用于每个团队。所以team_average 将是所有个人玩家平均值的总和。
我的尝试:
SELECT team,
(
SELECT AVG(player_team_average) AS players_team_average
FROM
(
SELECT AVG(CASE WHEN f_team1='arsenal' OR f_team2='arsenal' THEN f_total_ftg END) AS team_average
FROM
(
SELECT f_player1 AS player, f_team1, f_team2, f_total_ftg FROM results
UNION
SELECT f_player2 AS player, f_team1, f_team2, f_total_ftg FROM results
) x GROUP BY player
) x
) AS team_average FROM (
(SELECT f_team1 AS team, f_total_ftg FROM results)
UNION
(SELECT f_team2 AS team, f_total_ftg FROM results)
) x GROUP BY team
当前输出:
正如您从我的代码中看到的那样,我将球队设为arsenal,这给出了不同球员的正确总体平均水平。我怎样才能为每个团队做到这一点?我需要分出字符串并为每个团队应用平均值。
我该怎么做?
表格如下:
【问题讨论】:
-
您能否从表中添加更多示例数据并添加您的预期输出,谢谢!
-
f_player1是否属于f_team_1和f_player2是否属于f_team_2?如果是这样,并且如果同一名球员有时为一支球队效力,而其他时间为另一支球队效力,您是否希望在计算两支球队时都考虑球员的总体平均数,或者您是否希望计算该球员的球队相关平均数? -
附带说明:平均值的平均值很少需要。例如:一个由非常弱的球员组成的球队,你多年来一直有成绩,可能已经给了一些超级球员以获得单一的利益表现。这不会对整体平均值产生太大影响,但会极大地影响玩家的平均值。
-
考虑修改你的数据模型
标签: mysql sql sum average unpivot