Книги и статьи по SQL Rambler's Top100 Switch language to: English 9 декабря 2021 г. 10:50:58


www.sql-ex.ru
Skip Navigation Links  

 

Print  Версия для печати

На главную страницу

Характерные ошибки при решении упражнений. Задача 51

Моисеенко С.И.

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

Характерная ошибка, допускаемая в этой задаче, связана с нахождением максимума. Вот как это делают:

select max(numGuns) guns,displacement 
       from classes group by displacement

То есть ищется максимум по КЛАССАМ кораблей, хотя в задаче нет ни слова о классах, ведь не случайно сделан акцент в формулировке: "среди всех имеющихся кораблей...".

Ситуация, когда запрос будет работать неправильно, такова:

  • есть класс без кораблей в базе данных;
  • для этого класса число орудий максимально среди классов кораблей с таким же водоизмещением.
  • этот максимум не достигается для кораблей других классов.

В итоге для данного водоизмещения запрос не выведет ни одного корабля, хотя таковые могут быть в базе данных.

Вывод: максимум нужно искать по имеющимся кораблям, что и написано в условии задачи.

Перейти к решению задачи #51

На главную страницу

Print  Версия для печати


Использование любых материалов данного сайта возможно только
при условии обязательного размещения прямой ссылки на сайт
http://www.sqlbooks.ru
на каждой странице, где размещены используемые материалы.

 Начало   Статьи    Книги 
Рейтинг@Mail.ru Rambler's Top100 Alt Упражнения по SQL: обучение, тестирование, сертификация по языку SQL Copyright c 2002-2006. All rights reserved.