четверг, 16 апреля 2020 г.

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

Задание: 42 (Serge I: 2002-11-05)


SELECT ship, battle FROM Outcomes WHERE result = 'sunk'

Для ПК с максимальным кодом из таблицы PC вывести все его характеристики (кроме кода) в два столбца:

Задание: 41 (Serge I: 2008-08-30)
Для ПК с максимальным кодом из таблицы PC вывести все его характеристики (кроме кода) в два столбца: 
- название характеристики (имя соответствующего столбца в таблице PC); 
- значение характеристики 

select fields,A from
(
Select
  cast(model as NVARCHAR(10)) as model
, cast (speed as NVARCHAR(10)) as speed
, cast(ram as NVARCHAR(10)) as ram
,cast(hd as NVARCHAR(10)) as hd
, cast(cd as NVARCHAR(10)) as cd
, cast(price as NVARCHAR(10)) as price from PC
where code = (Select max(code) from PC)
) as t

unpivot
(
A for fields in (model, speed, ram, hd, cd, price)
) as unpvt

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

Задание: 40 (Serge I: 2002-11-05)
 

Select Classes.class, Ships.name, Classes.country
from Ships inner join Classes
on Ships.class = Classes.class
where Classes.numGuns > = 10

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

Задание: 40 (Serge I: 2002-11-05)

SELECT s.class, s.name, c.country
FROM ships s
LEFT JOIN classes c ON s.class = c.class
WHERE c.numGuns >= 10

Найдите корабли, "сохранившиеся для будущих сражений"; т.е. выведенные из строя в одной битве (damaged), они участвовали в другой, произошедшей позже.

Задание: 39 (Serge I: 2003-02-14)

WITH b_s AS
(SELECT o.ship, b.name, b.date, o.result
FROM outcomes o
LEFT JOIN battles b ON o.battle = b.name )
SELECT DISTINCT a.ship FROM b_s a
WHERE UPPER(a.ship) IN
(SELECT UPPER(ship) FROM b_s b
WHERE b.date < a.date AND b.result = 'damaged')

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

Задание: 38 (Serge I: 2003-02-19)

SELECT country
FROM classes
GROUP BY country
HAVING COUNT(DISTINCT type) = 2

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

Задание: 37 (Serge I: 2003-02-17)
.class
FROM classes c
 LEFT JOIN (
 SELECT class, name
 FROM ships
 UNION
 SELECT ship, ship
 FROM outcomes
) AS s ON s.class = c.class
GROUP BY c.class
HAVING COUNT(s.name) = 1

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

Задание: 36 (Serge I: 2003-02-17)

Select name from ships where class = name
union
select ship as name from classes,outcomes where classes.class = outcomes.ship

В таблице Product найти модели, которые состоят только из цифр или только из латинских букв (A-Z, без учета регистра).

Задание: 35 (qwrqwr: 2012-11-23)

Вывод: номер модели, тип модели.
SELECT model, type
FROM product
WHERE upper(model) NOT like '%[^A-Z]%'
OR model not like '%[^0-9]%'

По Вашингтонскому международному договору от начала 1922 г. запрещалось строить линейные корабли водоизмещением более 35 тыс.тонн. Укажите корабли, нарушившие этот договор (учитывать только корабли c известным годом спуска на воду).

Задание: 34 (Serge I: 2002-11-04)
По Вашингтонскому международному договору от начала 1922 г. запрещалось строить линейные корабли водоизмещением более 35 тыс.тонн. Укажите корабли, нарушившие этот договор (учитывать только корабли c известным годом спуска на воду). Вывести названия кораблей.
Select name from classes,ships where launched >=1922 and displacement>35000 and type='bb' and
ships.class = classes.class