Упражнение 11 (подсказки и решения) |
||
Наличие стандартной агрегатной функции AVG решает все проблемы: Однако на форуме сайта были замечены попытки выделиться из общей «серой» массы. Вот вполне эквивалентное решение, которое, правда, добавляет лишнюю операцию в процедурный план: Справедливость следующего решения зависит от имеющихся ограничений: А именно, если SUM(speed) игнорирует строки с NULL-значением скорости, то SUM(1) подсчитает общее количество строк в таблице PC, что, по существу, эквивалентно использованию COUNT(*). В результате в числителе будет подсчитана сумма скоростей всех ПК за исключением строк с неизвестной скоростью, которая будет делиться на общее число строк. Поэтому все приведенные решения будут эквивалентны, только если NULL-значения недопустимы, то есть имеется ограничение NOT NULL на столбце speed. Вернуться к обсуждению упражнения 11 |