select s.name, c.country, o.battle -- each ship, its country, and the battle it was sunk in from Ships s, Outcomes o, Classes c where o.result = 'sunk' and o.ship = s.name and c.class = s.class; select s1.name, s2.name, c1.country, s1.launched -- each case of two ships from the same country launched the same year from Ships s1, Ships s2, Classes c1, Classes c2 where s1.class = c1.class and s2.class = c2.class and c1.country = c2.country and s1.launched = s2.launched and s1.name < s2.name; select s.name, c.country -- each ship and its country, for which we have no record of the ship being sunk from Ships s, Classes c where s.class = c.class and s.name not in (select o.ship from Outcomes o where o.result = 'sunk'); select s.name, c.country -- each ship and its country, for which we have no record of the ship being sunk from Ships s, Classes c where s.class = c.class and not exists (select * from Outcomes o where o.result = 'sunk' and o.ship = s.name); select s.name -- each ship launched the latest year from Ships s where s.launched = (select max(s2.launched) from Ships s2); select s.name -- each ship launched the latest year from Ships s where s.launched >= ALL (select s2.launched from Ships s2); select s.name -- each ship launched the latest year from Ships s where NOT (s.launched < ANY (select s2.launched from Ships s2)); (select s.name from Ships s) union -- all ships mentioned in either table (select o.ship AS name from Outcomes o); select * -- information about outcomes completed, to the extent possible, with ship info from Outcomes o LEFT OUTER JOIN Ships s ON o.ship = s.name;