mysql - 按组中的最大值排序
问题描述
我有这个
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
Team
中每个组的“Rank”(最大值)。t2
- 将此派生表与基于使用的表连接起来
Team
。 - 现在,按“排名”以降序和
Name
升序对结果进行排序。因此,具有最高最大值的 Team 行排在第一位,按其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
推荐阅读
- video-streaming - 从 Web Socket 获取和播放视频流
- react-native - 错误:无法找到或加载主类 org.gradle.wrapper.GradleWrapperMain MacOS
- c# - 在 Linux 容器上导入 PowerShell 二进制模块时不会导出命令
- python - 有没有办法通过声明构成其键值对的变量来创建字典?
- c++ - 尽管在参数中提供了所有需要的库,为什么编译器会抛出“未定义的引用 ...”
- flutter - 在 Dart 中通过引用或指针或值传递
- android-studio - 颤振:在 android studio 和 vscode 中显示没有连接设备
- c++ - 如何在 QCustomPlot Axis 上显示上限和下限值?
- sql - 大查询 - 重复记录到单独的列
- java - 为什么我们在 Assertj Swing 测试中偶尔会失败?