我有一个比赛的比赛表。
这里是mysql表:
id | 玩家1 | player1_score | player1_rating | 玩家2 | player2_score | player2_rating | tourney_id | 回合 |
---|---|---|---|---|---|---|---|---|
1 | 1 | 9 | 1.05 | 2 | 3 | 5.34 | 5 | 1 |
2 | 3 | 4 | 5.21 | 4 | 9 | 3.34 | 5 | 1 |
3 | 5 | 9 | 3.52 | 6 | 2 | 5.24 | 5 | 1 |
4 | 1 | 9 | 6.23 | 3 | 0 | 4.74 | 5 | 2 |
5 | 2 | 8 | 9.43 | 4 | 9 | 1.23 | 5 | 2 |
6 | 3 | 9 | 3.41 | 5 | 7 | 6.23 | 5 | 2 |
7 | 1 | 9 | 5.22 | 4 | 2 | 2.43 | 5 | 3 |
8 | 2 | 3 | 4.21 | 3 | 9 | 5.22 | 5 | 3 |
9 | 5 | 1 | 7.31 | 6 | 9 | 3.43 | 5 | 3 |
如何获得特定锦标赛中每位球员的平均球员评分? 请注意,有两列包含玩家 ID (player1, player2)
答案 0 :(得分:0)
根据您的要求(即使您没有给我们您的预期结果),我认为您的代码应该是这样的:
SELECT (SELECT SUM(player1_rating) / COUNT(DISTINCT player1)
FROM your_table GROUP BY player1) as avg_player1,
(SELECT SUM(player2_rating) / COUNT(DISTINCT player2) FROM your_table
GROUP BY player2) as avg_player2
FROM your_table
答案 1 :(得分:-1)
我将查询修改为:
SELECT player_id
, tourney_id
, avg_player_rating = SUM(player_rating) / SUM(cnt)
FROM (
SELECT player_id = player1
, tourney_id
, player_rating = SUM(player1_rating)
, cnt = COUNT(*)
FROM tournament
GROUP BY tourney_id, player1
UNION ALL
SELECT player_id = player2
, tourney_id
, player_rating = SUM(player2_rating)
, cnt = COUNT(*)
FROM tournament
GROUP BY tourney_id, player2
) AS a
GROUP BY player_id, tourney_id
这将给出结果:
player_id tourney_id avg_player_rating
---------- ---------- --------------------
1 5 4.1666
2 5 6.3266
3 5 4.6450
4 5 2.3333
5 5 5.6866
6 5 4.3350
我希望这是您正在寻找的结果。