题目
![](https://img2020.cnblogs.com/blog/1469454/202107/1469454-20210707120332024-698845284.png)
数据
![](https://img2020.cnblogs.com/blog/1469454/202107/1469454-20210707120350953-448511598.png)
结果
![](https://img2020.cnblogs.com/blog/1469454/202107/1469454-20210707120404534-838159817.png)
解答
1.因为分了两场,所以把两场连接为一场
select first_player player_id,first_score score from matches #
union all
select second_player player_id,second_score score from matches
![](https://img2020.cnblogs.com/blog/1469454/202107/1469454-20210707120628979-960748388.png)
2. 连接players表,按组别和玩家 分组计算得分
select group_id,players.player_id,sum(score) score1
from players
right join(
select first_player player_id,first_score score from matches #
union
select second_player player_id,second_score score from matches
) a
on a.player_id = players.player_id
group by group_id,player_id
order by group_id
![](https://img2020.cnblogs.com/blog/1469454/202107/1469454-20210707120958898-737430093.png)
3.按照组别分组,按分数排名(排名的时候,按照分数和用户id排名)!!!!!!
select group_id,player_id,score1,
rank() over (partition by group_id order by score1 desc,player_id) rn
from(
select group_id,players.player_id,sum(score) score1
from players
right join(
select first_player player_id,first_score score from matches #
union
select second_player player_id,second_score score from matches
) a
on a.player_id = players.player_id
group by group_id,player_id
order by group_id
) b
![](https://img2020.cnblogs.com/blog/1469454/202107/1469454-20210707121218653-473112359.png)
4.筛选出来第一名的人,(按照分数和id)
select group_id,player_id ,rn
from(
select group_id,player_id,score1,
rank() over (partition by group_id order by score1 desc,player_id) rn
from(
select group_id,players.player_id,sum(score) score1
from players
right join(
select first_player player_id,first_score score from matches #
union
select second_player player_id,second_score score from matches
) a
on a.player_id = players.player_id
group by group_id,player_id
order by group_id
)b
)c
where rn = 1
![](https://img2020.cnblogs.com/blog/1469454/202107/1469454-20210707122002450-717712126.png)