Практический тренинг по SQL

Думаю самое время применить на практике, все что ты выучил в уровне, время для настоящего SQL сражения! В этот уровне попадутся задания как из первой базы данных так и со второй, повторять их описание мы не будем, а только напомним схемы. Мы верим в тебя уже опытный джедай SQL, построй правильный запросы, и тебе откроются тайны древних сражений. 

 

В этом задании запросы на голову сложнее чем в предыдущих двух уровнях, обрати внимание, что практически во всех запросах прйдеться употребить JOIN, LEFT JOIN или INNER JOIN, так что повтори эти темы еще раз перед началом практики. 

Хорошенько разберись с устройством таблиц перед тем как начать писать запросы. В любом случае возвращайся к схеме как только она тебе понадобиться

Рассматривается БД кораблей, участвовавших во второй мировой войне. Имеются следующие отношения:


Classes (class, type, country, numGuns, bore, displacement)
Ships (name, class, launched)
Battles (name, date)
Outcomes (ship, battle, result) 


Корабли в «классах» построены по одному и тому же проекту, и классу присваивается либо имя первого корабля, построенного по данному проекту, либо названию класса дается имя проекта, которое не совпадает ни с одним из кораблей в БД. Корабль, давший название классу, называется головным.


Отношение Classes содержит имя класса, тип (bb для боевого (линейного) корабля или bc для боевого крейсера), страну, в которой построен корабль, число главных орудий, калибр орудий (диаметр ствола орудия в дюймах) и водоизмещение ( вес в тоннах).

В отношении Ships записаны название корабля, имя его класса и год спуска на воду.

В отношение Battles включены название и дата битвы, в которой участвовали корабли, а в отношении Outcomes – результат участия данного корабля в битве (потоплен-sunk, поврежден - damaged или невредим - OK). 


Замечания. 1) В отношение Outcomes могут входить корабли, отсутствующие в отношении Ships. 2) Потопленный корабль в последующих битвах участия не принимает.

Схемы базы данных "Сражения кораблей" и "Компьютерная фирма"

1. Найдите среднюю цену ПК и Ноутбуков, выпущенных производителем A (латинская буква). Вывести: одна общая средняя цена.

2. Укажите корабли, потопленные в сражениях в Северной Атлантике (North Atlantic). Вывод: ship.

3. Найдите класс, имя и страну для кораблей из таблицы Ships, имеющих не менее 10 орудий.

4. Найдите названия кораблей, потопленных в сражениях, и название сражения, в котором они были потоплены.

5. Найдите классы кораблей, в которых хотя бы один корабль был потоплен в сражении.

6. Найдите сражения, в которых участвовали корабли класса Kongo из таблицы Ships.

7. Перечислите названия головных кораблей, имеющихся в базе данных (учесть корабли в Outcomes).

8. Найдите классы, в которые входит только один корабль из базы данных (учесть также корабли в Outcomes).

9. Найдите страны, имевшие когда-либо классы обычных боевых кораблей ('bb') и имевшие когда-либо классы крейсеров ('bc').

10. Для каждого корабля, участвовавшего в сражении при Гвадалканале (Guadalcanal), вывести название, водоизмещение и число орудий.