Я не могу решить проблему, связанную с подзапросами - PullRequest
0 голосов
/ 09 июля 2019

Итак, вот задача: найти континенты, где все страны имеют население <= 25000000. Затем найдите названия стран, связанных с этими континентами. Показать название, континент и население. </p>

Мое мнение:

select continent, name, population
from world x
where name = all(select name from world y
where y.continent=x.continent
and population<2500000 and population>0)

Это не приносит мне желаемых результатов, оно дает мне только две страны Евразии.

Ответы [ 3 ]

1 голос
/ 09 июля 2019

В этом случае вы можете использовать NOT EXISTS:

select name, continent, population 
from world t
where not exists (
   select 1 from world 
   where continent = t.continent and population > 25000000
);

или с подзапросом для использования с оператором IN:

select name, continent, population 
from world
where continent in (
   select continent from world
   group by continent 
   having max(population) <= 25000000
);
0 голосов
/ 09 июля 2019

Почему бы не использовать объединение для объединения двух таблиц, а не подзапроса?Это также может помочь?Кроме того, я не совсем понимаю «мир х» против вашей другой таблицы «у», поэтому вам, возможно, придется немного скорректировать мой запрос.Надеюсь, это поможет !!

SELECT continent, name, population
from world x
JOIN y on y.continent = x.continent
WHERE population < 2500000 and population > 0;
0 голосов
/ 09 июля 2019

Требуется ли использовать подзапрос?Ваш запрос в основном эквивалентен -

SELECT continent, name, population
FROM world x
WHERE population > 0 
AND population < 2500000
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...