Загрузка данных


--2.1 Вывести минимальную площадь стран.
SELECT 
    MIN(Площадь) AS Мин_площадь 
FROM Countries;

--2.2 Вывести наибольшую по населению страну в Северной и Южной Америке.
SELECT TOP 1 
    Название, 
    Население 
FROM Countries 
WHERE Континент IN ('Северная Америка', 'Южная Америка') 
ORDER BY Население DESC;

--2.3 Вывести среднее население стран. Результат округлить до одного знака.
SELECT 
    ROUND(AVG(CAST(Население AS FLOAT)), 1) AS Среднее_население 
FROM Countries;

--2.4 Вывести количество стран, у которых название заканчивается на «ан», кроме стран, у которых название заканчивается на «стан».
SELECT 
    COUNT(*) AS Количество 
FROM Countries 
WHERE Название LIKE '%ан' 
  AND Название NOT LIKE '%стан';

--2.5 Вывести количество континентов, где есть страны, название которых начинается с буквы «Р».
SELECT 
    COUNT(DISTINCT Континент) AS Количество_Континентов 
FROM Countries 
WHERE LEFT(Название, 1) = 'Р';

--2.6 Сколько раз страна с наибольшей площадью больше, чем страна с наименьшей площадью?
SELECT 
    CAST(MAX(Площадь) AS FLOAT) / MIN(Площадь) AS Во_сколько_раз 
FROM Countries;

--2.7 Вывести количество стран с населением больше, чем 100 млн. чел. на каждом континенте. Результат отсортировать по количеству стран по возрастанию.
SELECT 
    Континент, 
    COUNT(Название) AS Количество_Стран 
FROM Countries 
WHERE Население > 100000000 
GROUP BY Континент 
ORDER BY Количество_Стран ASC;

--2.8 Вывести количество стран по количеству букв в названии. Результат отсортировать по убыванию.
SELECT 
    LEN(Название) AS Длина_Названия, 
    COUNT(*) AS Количество_Стран 
FROM Countries 
GROUP BY LEN(Название) 
ORDER BY Количество_Стран DESC;

--2.9 Ожидается, что через 20 лет население мира вырастет на 10%. Вывести список континентов с прогнозируемым населением.
SELECT 
    Континент, 
    FLOOR(SUM(Население) * 1.1) AS Прогнозируемое_Население 
FROM Countries 
GROUP BY Континент;

--2.10 Вывести список континентов, где разница по площади между наибольшими и наименьшими странами не более в 10000 раз.
SELECT 
    Континент 
FROM Countries 
GROUP BY Континент 
HAVING MAX(Площадь) <= 10000 * MIN(Площадь);

--2.11 Вывести среднюю длину названий Африканских стран.
SELECT 
    AVG(CAST(LEN(Название) AS FLOAT)) AS Средняя_длина_названия 
FROM Countries 
WHERE Континент = 'Африка';

--2.12 Вывести список континентов, у которых средняя плотность среди стран с населением более 1 млн. чел. больше, чем 30 чел. на кв. км.
SELECT 
    Континент 
FROM Countries 
WHERE Население > 1000000 
GROUP BY Континент 
HAVING AVG(CAST(Население AS FLOAT) / Площадь) > 30;