mysql - 选择分组列的最小值

标签 mysql sql

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/

相关文章:

mysql - 从数据库中获取数据并设置到jsp文件中

php - 无法使用升级的 php 版本和 mysql 版本运行本地主机

java - JavaFX嵌入式应用程序可以与远程mysql数据库通信吗

php - SELECT查询, ""为空时WHERE全选

mysql - 如何优化跨三个表、40k 行且仅返回 22 个结果的慢速 "select distinct"查询

php - mysql 如何在一行中显示每个投资组合、股票的值

MySQL 交叉表结果

mysql - 我对两个表的更新查询不起作用 (MYSQL)

c# - 这段代码中的 IEventRepository 是什么? Resolver.resolve( ) 是做什么的?

c# - ORA-00933: SQL 命令未正确结束