На главную страницу
Характерные ошибки при решении упражнений.
Задача 51
Моисеенко С.И.
Найдите названия кораблей, имеющих наибольшее число орудий среди всех имеющихся кораблей такого же
водоизмещения (учесть корабли из таблицы Outcomes).
Характерная ошибка, допускаемая в этой задаче, связана с нахождением максимума.
Вот как это делают:
select max(numGuns) guns,displacement
from classes group by displacement
То есть ищется максимум по КЛАССАМ кораблей, хотя в задаче нет ни слова о классах,
ведь не случайно сделан акцент в формулировке: "среди всех имеющихся кораблей...".
Ситуация, когда запрос будет работать неправильно, такова:
- есть класс без кораблей в базе данных;
- для этого класса число орудий максимально среди классов кораблей с таким же водоизмещением.
- этот максимум не достигается для кораблей других классов.
В итоге для данного водоизмещения запрос не выведет ни одного корабля, хотя таковые
могут быть в базе данных.
Вывод: максимум нужно искать по имеющимся кораблям, что и написано в условии
задачи.
Перейти к
решению задачи #51
На главную страницу