loading..
Русский    English
18:35
листать

Упражнение 39 стр. 1

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

Вот пример неправильно понятого условия:

Решение 3.4.1

Консоль
Выполнить
  1. SELECT DISTINCT ship FROM Outcomes os
  2. WHERE EXISTS (SELECT ship
  3. FROM Outcomes oa
  4. WHERE oa.ship = os.ship AND
  5. result = 'damaged'
  6. ) AND
  7. EXISTS (SELECT SHIP
  8. FROM Outcomes ou
  9. WHERE ou.ship=os.ship
  10. GROUP BY ship
  11. HAVING COUNT(battle)>1
  12. );

Это решение исполнено в стиле реляционного исчисления, а именно, разыскиваются такие корабли в таблице Outcomes, которые были повреждены (первый предикат EXISTS) и которые участвовали более чем в одной битве (второй предикат EXISTS).

Ошибка здесь состоит в том, что проигнорировано условие «сохранившиеся для будущих сражений», которое означает, что после битвы, в которой корабль получил повреждение, он принимал участие в более позднем сражении. Таким образом, для получения правильного решения этой задачи нужно анализировать даты сражений, которые содержатся в таблице сражений Battles.

Страницы: 1 2 3 4
Тэги:
ALL AVG battles CASE CAST CHAR CHARINDEX classes COALESCE Convert COUNT CTE DATEDIFF DATEPART DATETIME DELETE DISTINCT EXCEPT EXISTS EXTRACT FROM FULL JOIN GROUP BY Guadalcanal HAVING IN INNER JOIN insert INTERSECT ISNULL laptop LEFT LEFT OUTER JOIN LEN maker MAX MIN MySQL NOT IN NULL ORDER BY Outcome outcomes OVER PARTITION BY pc PIVOT PostgreSQL printer product Больше тэгов
Учебник обновлялся
несколько дней назад
lego для детей
©SQL-EX,2008 [Развитие] [Связь] [О проекте] [Ссылки] [Team]
Перепечатка материалов сайта возможна только с разрешения автора.
Rambler's Top100