按组中的最大值排序



我有这个

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
  • 首先,在派生表t2中找到每个Team组的"Rank"(最大值(。
  • 将此派生表与基于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 

最新更新