所以我有这个MySQL 5.0.24表
select state, county, population from state_pops order by state, county;
产量
Arizona Yapavai 4
Arizona Pueblo 5
Arizona Pinal 8
Arizona Maricopa 13
Michigan Lawson 3
Michigan Maple 4
Michigan Appleton 8
Texas Richmond 5
Texas Dupree 7
Texas Brighton 10
我需要确定哪个州是每个州人口最多的县。
select state, county, max( population) from state_pops group by state order by state;
产量
Arizona Maricopa 13
Michigan Appleton 8
Texas Brighton 10
易。但现在,我需要以某种方式标记每个州的人口最多的县 列出所有州的所有县,如此
Arizona Yapavai 4 NO
Arizona Pueblo 5 NO
Arizona Pinal 8 NO
Arizona Maricopa 13 YES
Michigan Lawson 3 NO
Michigan Maple 4 NO
Michigan Appleton 8 YES
Texas Richmond 5 NO
Texas Dupree 7 NO
Texas Brighton 10 YES
所以我需要以某种方式派生一个专栏,也许某种形式的CASE..WHEN任何想法?
TIA,
Still-learning Stev
答案 0 :(得分:2)
您可以使用此解决方案:
SELECT a.state,
a.county,
a.population,
COALESCE(b.isMostPop, 'NO') AS flag
FROM state_pops a
LEFT JOIN
(
SELECT state, MAX(population) AS maxpop, 'YES' AS isMostPop
FROM state_pops
GROUP BY state
) b ON a.state = b.state AND a.population = b.maxpop
答案 1 :(得分:0)
使用此
select state, county, population,heaviest(state,conuty) from state_pops order by state, county;
并为该功能执行此操作:
create function `heaviest`(`fstate` char(10),`fcounty` char(10))
RETURNS char(3)
BEGIN
declare ans char(3);
if (select population from yourtable where state=fstate and county=fcounty)>=(select max(population) from yourtable group by state having state=fstate and count=fcount) then set ans='yes';
else set ans='no';
end if;
return ans;
END;;