[英]Selecting lowest value of grouped column
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列最低值。
提前致謝
從表GROUP BY B中選擇MIN(A)AS MaxA,B,MAX(C)AS MinC
給
310 09001 19
312 09005 18
不
131733 09001 19
141331 09005 18
這就是我所需要的
select min(A), B, C from my_table where ( C) in ( select max(C) from my_table where B in (09001,09005) group by B) and B in (09001,09005) group by B, C
結果是
310 09001 18
126352 09005 18
131733 09001 19
但是09001應該只有一個結果
Select min A,B from my_table where C in (select max(c) from my table where A in (09001, 09005)group by A) and fips in (09001, 09005) group by 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
您是否需要超過B的最大值的最小值
select min(A), B, C
from my_table
where ( B, C ) in (
select B, max(C)
from my_table
group by B
)
group by B,C
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.