Извените что не по теме, но помница кто то здесь тоже решал задачи с
этого сайта.... Подскажите плз. решение а то мой мозг ужо закипает....
Это уже третий вариант моего решения (видимо самое близкое к истине,
всего 1 несовпадение осталось :) ), все равно не прохожу проверку на
второй базе...
select c.class, count(c.class) from classes c
left join (select s1.class, s1.name from ships s1
where s1.name in (select o1.ship from outcomes o1
where o1.result = 'sunk')) s
on s.class = c.class
left join outcomes o
on o.ship = c.class and o.result = 'sunk'
and o.ship not in (select ww.name from ships ww)
where o.ship is not null or s.name is not null
group by c.class
having c.class in
(
select c11.class from classes c11
left join ships s11
on s11.class = c11.class
left join outcomes o11
on o11.ship = c11.class
group by c11.class
having count(c11.class) > 2)
Задание: 57
Для классов, имеющих потери в виде потопленных кораблей и не менее 3
кораблей в базе данных, вывести имя класса и число потопленных
кораблей.
Краткая информация о базе данных "Корабли":
Рассматривается БД кораблей, участвовавших во второй мировой войне.
Имеются следующие отношения:
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). Замечание. В
отношение Outcomes могут входить корабли, отсутствующие в отношении
Ships.