gpt4 book ai didi

mysql - 比较行并选择最大值

转载 作者:行者123 更新时间:2023-11-29 06:14:50 24 4
gpt4 key购买 nike

我有下表:

FileName | SubFileName | TotalPlayersCount |
-------------------------------------------
AAA | SF1 | 11 |
AAA | SF2 | 5 |
AAA | SF3 | 3 |
BBB | SF1 | 8 |
BBB | SF2 | 15 |
BBB | SF3 | 2 |
CCC | SF1 | 5 |
CCC | SF2 | 10 |
CCC | SF3 | 20 |

如您所见,每个 FileName 都有 3 个不同的 SubfileName('SF1'、'SF2'、'SF3')。

每个 SubfileName 都有不同的 TotalPlayersCount 值。

我正在尝试从三个 SubfileName 中选择 TotalPlayersCount 列的最大值,而这 FOREACH FileName

结果应该是:

FileName | SubFileName | TotalPlayersCount |
-------------------------------------------
AAA | SF1 | 11 |
BBB | SF2 | 15 |
CCC | SF3 | 20 |

我自己尝试了几个查询,这是我最接近的查询:

select distinct FileName, max(TotalPlayersCount) AS TotalPlayersCount
from dbo.MyTestTable
group by FileName

这是我得到的结果:

FileName | TotalPlayersCount |
------------------------------
AAA | 11 |
BBB | 15 |
CCC | 20 |

所以现在我在结果中丢失了 SubfileName

你能帮我找到丢失的东西吗?

提前致谢。

最佳答案

简单的方法,使用 NOT EXISTS 返回一行,如果没有其他具有相同 FileName 的行具有更高的 TotalPlayersCount:

select FileName, SubFileName, TotalPlayersCount 
from dbo.MyTestTable t1
where not exists (select 1 from dbo.MyTestTable t2
where t2.FileName = t1.FileName
and t2.TotalPlayersCount > t1.TotalPlayersCount)

JOIN 版本,也许性能更好:

select t1.FileName, t1.SubFileName, t1.TotalPlayersCount 
from dbo.MyTestTable t1
JOIN (select FileName, max(TotalPlayersCount) as TotalPlayersCount
from dbo.MyTestTable
group by FileName) t2
ON t2.FileName = t1.FileName
and t2.TotalPlayersCount = t1.TotalPlayersCount

如果出现平局,两个查询都将返回两行!

关于mysql - 比较行并选择最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36446666/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com