【发布时间】:2021-02-03 11:58:02
【问题描述】:
我有来自子查询的下表:
+----------+--------+--------+
| category | Number | Person |
+----------+--------+--------+
| Fishing | 3 | p1 |
| Fishing | 31 | p2 |
| Fishing | 32 | p3 |
| Reading | 25 | p2 |
| Reading | 45 | p3 |
| Reading | 8 | p1 |
| Surfing | 8 | p1 |
| Surfing | 17 | p3 |
| Surfing | 20 | p2 |
+----------+--------+--------+
我正在尝试获得每个类别都有 MAX 的响应,例如冲浪 20 p2。但是,当我尝试对“数字”进行 MAX 设置并按“类别”分组时,出现非聚合“人员”的错误。
到目前为止,我已经做到了:
SELECT
subQry.category,
subQry.number,
subQry.person
FROM
(
#complicated multiple joins to get the summed up table above.
) AS subQry
如前所述,如果我执行 MAX(subQry.total) 和 GROUP BY 'Category',我会在 'person' 上得到非聚合错误。
我尝试了几件事,但我是新手,不太了解它们如何适合我的场景。一个有意义但抛出错误的是这里的最高答案:Get records with max value for each group of grouped SQL results,但我不能在 subQry 上自行加入,错误说它不是表。
任何帮助将不胜感激:
+----------+--------+--------+
| category | Number | Person |
+----------+--------+--------+
| Fishing | 32 | p3 |
| Reading | 45 | p3 |
| Surfing | 20 | p2 |
+----------+--------+--------+
【问题讨论】:
标签: mysql sql max where-clause greatest-n-per-group