按组中的最大值排序

Order by max value in group

我有这个

Name   | Team     | Value
-------|----------|--------
A      | RED      |1
B      | BLUE     |2
C      | RED      |3
D      | BLUE     |4
E      | BLUE     |5

我需要这个: 最大值较高的队伍最先出现

Name   | Team     | Value
-------|----------|--------
B      | BLUE     |2
D      | BLUE     |4
E      | BLUE     |5
A      | RED      |1
C      | RED      |3
  • 首先,为 Derived Table t2 中的每个 Team 组找到 "Rank"(最大值)。
  • 使用Team.
  • 加入这个派生的table和你的table
  • 现在,按 "Rank" 降序排列结果,按 Name 升序排列结果。因此,具有最高最大值的团队的行排在第一位,按其自身 Name 排序。

您可以尝试以下查询(将 your_table 替换为您实际的 table 姓名):

SELECT t1.Name, 
       t1.Team, 
       t1.Value 
FROM your_table AS t1 
JOIN 
(
  SELECT t2.Team, 
         MAX(t2.Value) AS rank 
  FROM your_table AS t2 
  GROUP BY t2.Team 
) AS t2 ON t2.Team = t1.Team 
ORDER BY t2.rank DESC, t1.Name ASC