SQLZOO - с помощью GROUPBY найти самую большую страну на континенте;Это возможно? - PullRequest
0 голосов
/ 24 мая 2018

Я работаю над практической проблемой из SQLZOO и не уверен, почему решение, которое я пробую, не работает, поскольку оно имеет смысл для меня.

Это формат таблицы::

( имя ------ континент ----- площадь -------- население ---- ВВП

Афганистан - Азия --------- 652230 ------- 25500100 ----- 20343000000

...)

Вопрос в следующем:

Найдите самую большую страну (по области) на каждом континенте, покажите континент, название и область.

Вот способ, которым я думал, чтобы решить это:

SELECT continent, name, area FROM world
WHERE name IN (SELECT continent, name, MAX(area) FROM world 
              GROUP BY continent);

Я знаю, что это не работает, но почему бы и нет?Похоже, что вложенный оператор SELECT находит страну с МАКСИМАЛЬНОЙ площадью на континент, не так ли?

Фактическое решение для этого выглядит примерно так:

SELECT continent, name, area FROM world x
  WHERE area >= ALL
    (SELECT area FROM world y
        WHERE y.continent=x.continent
          AND area>0)

Но это кажетсякак сложный способ придумать это ;;этот способ имеет больше смысла?Любые идеи приветствуются

Спасибо заранее !!

Ответы [ 2 ]

0 голосов
/ 29 мая 2019
select A.continent, W.name, A.area
from
(select continent, max(area) as area from world group by continent)A, world W
where
A.continent = W.continent
and
A.area = W.area
0 голосов
/ 24 мая 2018

Просто используйте:

SELECT continent, name, area 
  FROM world
 WHERE area IN (SELECT MAX(area) 
                  FROM world 
                 GROUP BY continent);

Демонстрация SQL Fiddle

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...