mysql - 显示每个唯一 ID 的所有重复最大值
问题描述
我有如下所示的数据表:
表格1:
name | t2id | percentage
-------------------------
A | 1 | 75
B | 1 | 75
C | 1 | 50
D | 2 | 30
E | 2 | 45
F | 2 | 45
G | 3 | 80
H | 3 | 70
E | 3 | 60
表2:
id | name
-----------
1 | NAME1
2 | NAME2
3 | NAME3
我得到了每个 t2id 的最大百分比,如下所示:
SELECT t1.name, t2.name, MAX(t1.percentage) AS MAX_p
FROM table1 t1 INNER JOIN table2 t2 ON t1.t2id = t2.id GROUP BY t1.t2id;
输出:
t1.name | t2.name | MAX_p
--------------------------
A | NAME1 | 75
E | NAME2 | 45
G | NAME3 | 80
现在我还尝试显示每个 t2id 的重复最大值,如下所示:
t1.name | t2.name | MAX_p
--------------------------
A | NAME1 | 75
B | NAME1 | 75
E | NAME2 | 45
F | NAME2 | 45
G | NAME3 | 80
我似乎找不到解决方案,我一直在尝试使用子查询,但无法让它显示正确的输出。如果有人可以帮助我解决我将如何做这件事,将不胜感激
解决方案
这是标准 SQL,适用于所有版本的 MySQL(和其他 RDBMS)
SELECT t1.name AS t1name, t2.name AS t2name, t1.percentage
FROM table1 t1
INNER JOIN table2 t2 ON t1.t2id = t2.id
INNER JOIN
(SELECT t2id, MAX(percentage) AS MAX_p
FROM table1 t1
GROUP BY t2id) m
ON t1.t2id = m.t2id AND t1.percentage=m.MAX_p
推荐阅读
- python - 从文本文件中逐行提取数据并将其存储在python中的列表中
- python - 将字典写入 csv 适用于来自 UbuntuVM 的文件,但不适用于来自 Windows 的文件
- c++ - Qt - 如何从桌面应用程序启动 Skype 会话
- python - 使用 pip 安装 pyejabberd 时出现错误
- python - 发送数据的正确编码
- python - 使用 Anaconda 安装软件包的问题
- git - 恢复后恢复已删除的文件git
- azure-devops - 如何使用 Azure DevOps 将构建工件发布到外部组织?
- vue.js - 我有 SVG 文件,我想在其中无限期地循环动画。我不明白我怎么能做到这一点
- php -
标记的 str_ireplace 问题