Базы данных. Основы SQL реляционных баз данных. Копейкин М.В - 146 стр.

UptoLike

Например, оператор:
SELECT 2003 - (min (Год_ рожд) + Max (Год_ рожд)) / 2
FROM Отдел_ Сотрудник a, Сотрудник b
WHERE Отдел_ Сотрудник a, Сотрудник b
AND Название.b="Бухгалтерия";
выдаст интервал (среднее между максимальным и минимальным значениями) возраста
сотрудников бухгалтерии. Здесь надо обратить внимание на то, что при работе с базой
данных функция вернет округленное до целого значение интервала, поскольку в
выражении использованы только
целые числа, и поэтому осуществляется целочисленное
деление. Если же Вы в том же операторе замените делитель «2» на «2.», т.е. укажите его
как действительное значение, то и результат будет представлен действительным числом.
Отметим, что различные драйверы (ODBC, BDE) ведут себя иначе и могут не оправдать
наши надежды.
При использовании суммарных характеристик надо
учитывать, что в списке
возвращаемых значений после ключевого слова SELECT могут фигурировать или поля
(в том числе вычисляемые), или совокупные характеристики, но не могут фигурировать
и те и другие (без указания на группирование данных, о чем будет сказано ниже). Это
очевидно, так как оператор может возвращать или множество значений полей записей
,
или суммарные характеристики по таблице, но не может возвращать эти несовместимые
друг с другом данные.
Поэтому нельзя, например, записать оператор:
SELECT Фамилия, max (Год_ рожд)
FROM Сотрудник;
В этом операторе мы пытаемся определить фамилию самого молодого сотрудника.
Впрочем, эту задачу можно решить с помощью вложенных запросов, которые мы уже
рассматривали.
Смешение в
одном операторе полей совокупных характеристик возможно, если
использовать группировку записей, задаваемую ключевыми словами GROUP BY. После
этих ключевых слов перечисляются все поля, входящие в список SELECT. В этом
случае смысл совокупных характеристик изменяется: они проводят вычисления не по