这是LOCATION1
表格:
Loc_id Loc_name Loc_state Loc_area
1 ABC IA 600
2 DEF FL 700
3 GHI FL 900
4 JKL IA 200
5 MNO NY 600
6 CXY IA 600*
.
.
现在,我想要一个列表,其中greatest loc_area
包含每个loc_state
和关联的loc_name
. 因此,输出可能如下所示:
Loc_State Loc_Name Max(Loc_area)
IA ABC 600
FL GHI 900
NY MNO 600
我认为它从以下开始,但我不知道这是否正确。
SELECT LOC_STATE, LOC_NAME, LOC_AREA
FROM LOCATION1 LOC1
WHERE LOC_AREA IN (
SELECT MAX(LOC_AREA)
FROM LOCATION1 LOC2
HAVING LOC1.LOC_STATE = LOC2.LOC_STATE
GROUP BY LOC_STATE);
谁能帮我这个?
谢谢!
更新
上面的查询给出了多个loc_name
相同的loc_state
和max(loc_area)
。
假设IA中有一个CXY 与600*相同。loc_name
loc_state
loc_area
所以输出可以同时具有
(IA, ABC, 600)
和
(IA, CXY, 600)
。
我想这是可以接受的,因为 aloc_state
可以有多个loc_area(s)
具有相同值,在这种情况下为600但在不同的loc_name(s)
.
所以,问题解决了!
我认为 a_horse_with_no_name 的解决方案也可以正常工作。
select loc_state, loc_name, loc_area
from location1 loc1
where loc_area = (select max(loc_area)
from location1 loc2
where loc1.loc_state = loc2.loc_state);
再次感谢!