2013-04-12 1 views
1

У меня есть таблица со столбцами: населения, государства и округаSQL запросов, работа с MAX

Я хочу, чтобы найти округа с максимальным населения для каждого государства. Мне также хотелось бы напечатать имя графства и максимальное население для этого округа.

Как я могу сделать такой запрос?

+0

sqlite3, извините за отсутствие указаний – user209306

ответ

1

Вы должны быть в состоянии использовать подзапрос, чтобы получить максимальное население для каждого состояния, а затем использовать этот результат для определения округа:

select t1.county, 
    t1.population 
from yourtable t1 
inner join 
(
    select max(population) MaxPop, state 
    from yourtable 
    group by state 
) t2 
    on t1.population = t2.maxpop 
    and t1.state = t2.state; 

См SQL Fiddle with Demo

1

Вы можете сделать это с вложенным запрос, который использует EXISTS:

SELECT m1.county, m1.population 
FROM mytable m1 
WHERE NOT EXISTS (
    SELECT 1 -- No other county in the state has more people 
    FROM mytable m2 
    WHERE m1.state=m2.state 
     AND m2.population > m1.population 
) 

Если несколько округов в одном государстве есть то же самое population, и округа будут возвращены.

+0

Никогда не думал, что это можно сделать таким образом. Ницца! –

Смежные вопросы