loading..
Русский    English
09:06
листать

Упражнение 11 (подсказки и решения)

Наличие стандартной агрегатной функции AVG решает все проблемы:

Консоль
Выполнить
  1. SELECT AVG(speed)
  2. FROM PC;

Однако на форуме сайта были замечены попытки выделиться из общей «серой» массы. Вот вполне эквивалентное решение, которое, правда, добавляет лишнюю операцию в процедурный план:

Консоль
Выполнить
  1. SELECT SUM(speed)/COUNT(speed)
  2. FROM PC;

Справедливость следующего решения зависит от имеющихся ограничений:

Консоль
Выполнить
  1. SELECT SUM(speed)/SUM(1)
  2. FROM PC;

А именно, если SUM(speed) игнорирует строки с NULL-значением скорости, то SUM(1) подсчитает общее количество строк в таблице PC, что, по существу, эквивалентно использованию COUNT(*). В результате в числителе будет подсчитана сумма скоростей всех ПК за исключением строк с неизвестной скоростью, которая будет делиться на общее число строк. Поэтому все приведенные решения будут эквивалентны, только если NULL-значения недопустимы, то есть имеется ограничение NOT NULL на столбце speed.

Вернуться к обсуждению упражнения 11

Решить задачу на SQL-EX.RU


Bookmark and Share
Тэги:
ALL AND AUTO_INCREMENT AVG battles CASE CAST CHAR CHARINDEX CHECK classes COALESCE CONSTRAINT Convert COUNT CROSS APPLY CTE DATEADD DATEDIFF DATENAME DATEPART DATETIME DDL DEFAULT DELETE DISTINCT DML EXCEPT EXISTS EXTRACT FOREIGN KEY FROM FULL JOIN GROUP BY Guadalcanal HAVING IDENTITY IN INNER JOIN insert INTERSECT IS NOT NULL IS NULL ISNULL laptop LEFT LEFT OUTER JOIN LEN maker MAX Больше тэгов
Учебник обновлялся
вчера
©SQL-EX,2008 [Развитие] [Связь] [О проекте] [Ссылки] [Team]
Перепечатка материалов сайта возможна только с разрешения автора.
Rambler's Top100