首页 > 解决方案 > 当一组中可以有多个最大值时如何找到所有组中的最大值

问题描述

问题:说出每个种族中最强大的英雄。

桌子:

Hero Race Power
a-bomb human 7000
amazo human 7000
ajax cyborg 5000
mephis cyborg 5600
ammo human 1000
ardina alien 2000
jagua alien 200
myntria alien 2300
hyspace alien 2300
...
...
...

等等。

现在对于这个数据,对于“人类”种族,我们有 a-bomb 和 amazo 两者都具有最高的权力。所以我的输出应该包括他们的名字。

我的预期输出:

Race Hero
human a-bomb
human amazo
cyborg memphis
alien myntria
alien hyspace

请帮忙。

我尝试按种族分组并选择最大值,但是当同一种族有多个最大值时,这只会给出一个最大值。

SELECT race,hero, max(Power)
FROM heroes_info
GROUP BY race;

我的预期输出:

Race Hero
human a-bomb
human amazo
cyborg memphis
alien myntria
alien hyspace

我的实际输出:

Race Hero
human a-bomb
cyborg memphis
alien myntria

标签: sql

解决方案


你可以试试下面 -

SELECT race,hero, Power
FROM heroes_info a
where power in (select max(pawer) from heroes_info a1 where a.race=a1.race)

推荐阅读