Упражнение 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 ]]

Перейти к обсуждению упражнения 56

Решить упражнение на SQL-EX.RU