按组中的最大值排序

时间:2018-09-28 16:21:19

标签: mysql sql-order-by

我有这个

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

1 个答案:

答案 0 :(得分:1)

  • 首先,为Derived Table Team中的每个t2组找到“等级”(最大值)。
加入此派生表并根据您的表使用Team
  • 现在,将结果按降序按“等级”排序,按Name按升序排序。这样一来,具有最高价值的团队排就排在最前面,并按其内的Name进行排序。
  • 您可以尝试以下查询(将your_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