按组中的最大值排序
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
我有这个
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