На главную страницу
Характерные ошибки при решении упражнений.
Задача 16
Моисеенко С.И.
Найдите пары моделей PC, имеющих одинаковые скорость и RAM. В результате каждая
пара указывается только один раз, т.е. (i,j), но не (j,i), Порядок вывода:
модель с большим номером, модель с меньшим номером, скорость и RAM.
Вот решение, которое довольно часто встречается:
SELECT MAX(model) as 'model', MIN(model) as 'model', speed,
ram
FROM PC
GROUP BY speed, ram
HAVING MAX(model) > MIN(model)
Уж не знаю, по какой причине решают выводить только максимальную и минимальную
модель для каждого совпадающей пары значений {speed, ram}. Возможно, в
заблуждение вводит результат "правильного" запроса на основной базе.
В этой задаче требуется упорядочить все модели, а не только максимальную и
минимальную. Экстремальные характеристики упомянуты для однозначности, т.е.
чтобы выводить пару моделей один раз, например:
1122 1121
но не
1121 1122
Т.е. если, скажем, три модели - 1122, 1121, 1135 имеют одинаковые
характеристики, то вывод должен быть таким:
1135 1122
1135 1121
1122 1121
Есть еще одна ошибка, которую часто допускают при решении этой задачи. Она связана
с тем, что таблица PC может содержать несколько компьютеров с одним и тем же номером
модели (model). Поэтому необходимо исключить возможные дубликаты искомых пар.
Приведенные здесь примеры можно выполнить непосредственно на сайте, установив
флажок "Без проверки" на странице с упражнениями
на SELECT.
Перейти к
решению задачи #16
На главную страницу