Упражнение 56 (подсказки и решения)
Упражнение 56 (подсказки и решения)
Ниже приведено решение, в котором правильно проведен учет потопленных кораблей. Незначительную ошибку в этом решении предлагаем найти самостоятельно. В случае затруднения вернитесь к решению 3.12.3.
SELECT class, sum(r) sunks
FROM (SELECT name, class,
CASE
WHEN result = 'sunk'
THEN 1 ELSE 0
END r
FROM Ships AS s
LEFT JOIN Outcomes AS o ON o.ship = s.name
UNION
SELECT ship, class,
CASE
WHEN result = 'sunk'
THEN 1 ELSE 0
END r
FROM Classes c
JOIN (SELECT *
FROM Outcomes
WHERE NOT Ship IN (SELECT name
FROM Ships
)
) AS ot ON ot.ship = c.class
) AS b
GROUP BY class;
mssql
🚫
[[ error ]]
[[ column ]] |
---|
[[ value ]] |