A B C
+--------+-------+----+
| 310 | 09001 | 18 |
| 80614 | 09001 | 18 |
| 169009 | 09001 | 19 |
| 201695 | 09001 | 19 |
| 282089 | 09001 | 19 |
| 320438 | 09001 | 19 |
| 131733 | 09001 | 19 |
| 387427 | 09001 | 19 |
| 404201 | 09001 | 19 |
| 525449 | 09001 | 19 |
| 605542 | 09001 | 19 |
| 710740 | 09001 | 18 |
| 746380 | 09001 | 19 |
| 867492 | 09001 | 19 |
| 864637 | 09005 | 18 |
| 710741 | 09005 | 17 |
| 746375 | 09005 | 18 |
| 556470 | 09005 | 18 |
| 604258 | 09005 | 18 |
| 401597 | 09005 | 18 |
| 141331 | 09005 | 18 |
| 336054 | 09005 | 18 |
| 387423 | 09005 | 18 |
| 203706 | 09005 | 18 |
| 278651 | 09005 | 18 |
| 126352 | 09005 | 18 |
| 312 | 09005 | 17 |
| 74627 | 09005 | 17 |
+--------+-------+----+
不确定如何命名问题,但情况如下。我希望为 B 列中的每个不同值显示 1 行,这是 C 列中的最高值,A 列中的最低值。
例如,对于 09001 它将是 169009 09001 19,对于 09005 将显示 126352 09005 18
所以基本上 C 列的最大值按 B 列分组,并且这些行的 A 列中的最小值。
提前致谢
选择 MIN(A) AS MaxA、B、MAX(C) AS MinC 从表 按 B 分组
给出
310 09001 19
312 09005 18
不是
131733 09001 19
141331 09005 18
这就是我需要的
选择最小值(A)、B、C
来 self 的表
其中 (C) 在 (
选择最大值(C)
来 self 的表
其中 (09001,09005) 中的 B 组由 B)
和 (09001,09005) 中的 B
按 B、C 分组
结果
310 09001 18
126352 09005 18
131733 09001 19
但 09001 应该只有一个结果
<小时/>选择最小值 A,B
来 self 的表
其中 C in (选择 max(c)
从我的 table 上
其中 A
在(09001,
09005)A组)
和 fips (09001,
09005)
按A分组
最终成功了,虽然它只显示了 A 和 B,但在这个例子中我只需要 A 。我确信还有其他方法可以让 C 显示出来。
谢谢大家的帮助
最佳答案
我认为您已经解决了自己的问题。
SELECT MIN(A) AS MaxA, B, MAX(C) AS MinC
FROM Table
GROUP BY B
除非我在那里犯了某种愚蠢的错误。
编辑:我现在更好地理解了要求。尝试一下。
WITH T1 AS (
SELECT B, MAX(C) AS MaxC
FROM Table
GROUP BY B
), T2 AS (
SELECT MIN(A) AS MinA, MaxC
FROM T1
GROUP BY MaxC)
SELECT T2.MinA AS A, T1.B, T1.MaxC AS C
FROM T1
INNER JOIN T2
ON T1.MaxC = T2.MaxC
关于mysql - 选择分组列的最小值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44727456/