Mysql 如何在SQL中按汇总分数对团队进行排序?(使用SUM()进行两列排序)

Mysql 如何在SQL中按汇总分数对团队进行排序?(使用SUM()进行两列排序),mysql,sorting,Mysql,Sorting,Playerbase有3列:PlrName,TeamTag,Score 我需要按TeamTag对玩家进行分组排序。并将总结得分最高的团队放在上面 因此,想知道什么查询有助于实现这一点: PlrName|TeamTag|Score PlrName|TeamTag|Score ------------------------------------------------------- Player1|TeamThr|0 Player6|TeamThr|9 \

Playerbase
有3列:
PlrName
TeamTag
Score
我需要按
TeamTag
对玩家进行分组排序。并将总结得分最高的团队放在上面

因此,想知道什么查询有助于实现这一点:

PlrName|TeamTag|Score        PlrName|TeamTag|Score
-------------------------------------------------------
Player1|TeamThr|0            Player6|TeamThr|9  \
Player2|TeamTwo|2            Player1|TeamThr|0   > 9
Player3|TeamOne|4            Player4|TeamThr|0  /
Player4|TeamThr|0            Player5|TeamOne|4  \
Player5|TeamOne|4  became->  Player3|TeamOne|4   > 8
Player6|TeamThr|9            Player8|TeamOne|0  /
Player7|TeamTwo|2            Player2|TeamTwo|2  \
Player8|TeamOne|0            Player7|TeamTwo|2   > 6
Player9|TeamTwo|2            Player9|TeamTwo|2  /
增加: 通过此查询,我可以获得按团队分数排序的
TeamTag
数组(?):

按团队顺序按总和(分数)说明从Playerbase组中选择团队标签

…然后我可以使用此“数组”排序
PlayerBase
?在一个查询中预设:) 我还需要得到完整的行(使用*),而不仅仅是三个字段。

试试这个

; with cte as (
select  TeamTag, sum(Score) as Sum
from tablename)
select t.PlrName, t.teamtag, t.Score from tablename as t inner join cte as c 
on t.teamtag=c.teamtag order by c.sum desc, t.score desc

假设您的dbms支持窗口函数

select PlrName, TeamTag, Score
from (
    select PlrName, TeamTag, Score, sum(Score) over (partition by TeamTag) ms
    from tablename ) t
order by ms desc, TeamTag, Score desc

EDIT
max()
更改为
sum()
,因为OP改进了问题解释。

如果您的dbms不支持窗口功能(8.0以下的任何MySQL版本):


我是这样做的,但是对sql:D有点不舒服

    SELECT * FROM `Playerbase` as T1
    JOIN
    (SELECT TeamTag, SUM(Score) AS Sum FROM `Playerbase` GROUP BY TeamTag ORDER BY Sum DESC) AS T2
    ON T2.TeamTag = T1.TeamTag

虽然没有达到我想要的效果,但无论如何,谢谢你的回答。他们帮助我了解了更多:D

这一代码不假设特定团队得分的总和,对吗?
    SELECT * FROM `Playerbase` as T1
    JOIN
    (SELECT TeamTag, SUM(Score) AS Sum FROM `Playerbase` GROUP BY TeamTag ORDER BY Sum DESC) AS T2
    ON T2.TeamTag = T1.TeamTag