mysql 多行sum_mysql – 如何选择多个GROUP BY行的SUM?

该博客探讨了如何在MySQL中查询球员得分及所在队伍的总分。通过连接比赛、比赛球员和球员表,计算每个球员的比赛次数、个人总分以及其所在团队的所有比赛的总分。查询结果展示球员ID、比赛场次、个人总分和队伍总分。
摘要由CSDN通过智能技术生成

我有一个球员关系表和他们在每个比赛中得分.我正在尝试做一个选择,其中我得到一个明确的球员名单,他们的得分总分以及所有球队得分的得分总数.由于一切都是单一的参与者,我不知道如何只从那一列中脱离GROUP BY范围.对于下面的例子,我只想说每支球队只有两名球员.在实际数据库中,如果重要的话,每个团队有五个.多谢你们.

表“匹配”:

match_id | winning_team |

56427859 | 0 |

56427860 | 1 |

56427861 | 1 |

56427862 | 0 |

56427863 | 1 |

etc...

表“match_players”:

match_id | team | player_id | points |

56427859 | 0 | 10 | 3 |

56427859 | 0 | 33 | 1 |

56427859 | 1 | 26 | 0 |

56427859 | 1 | 39 | 2 |

56427860 | 0 | 23 | 1 |

56427860 | 0 | 33 | 3 |

56427860 | 1 | 18 | 1 |

56427860 | 1 | 10 | 4 |

etc...

期望的结果:

player_id | match_count | total_points | team_total_points |

the total of all

10 | 2 | 7 | 9 | points scored by

18 | 1 | 1 | 5 | the player and

23 | 1 | 1 | 4 | his teammates

26 | 1 | 0 | 2 | in all matches.

33 | 2 | 4 | 8 |

39 | 1 | 2 | 2 |

查询:

SELECT

p.player_id,

COUNT(*) AS match_count,

SUM(CASE WHEN mp.team = m.winning_team THEN 1 ELSE 0 END) AS win_count,

SUM(points) AS total_points,

[________________________________________] AS team_total_points

FROM matches m

INNER JOIN match_players mp ON m.match_id = mp.match_id

INNER JOIN players p ON mp.player_id = p.player_id

GROUP BY player_id

ORDER BY player_id

编辑:

“团队”栏目只是定义红色或蓝色,主场或客场等.球员可以在不同比赛的不同球队.玩家可以在比赛之间交换球队,比如休息躲避球.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值