- •Язык запросов sql
- •Общие сведения
- •Insert - запрос на добавление;
- •Инструкция select
- •Синтаксис select
- •Расширения инструкции select в access
- •Порядок выполнения выборки
- •Управление списком выбора
- •Указание источника данных
- •Применение реляционных операторов
- •Применение булевых операторов
- •Обработка неопределенных значений
- •Сортировка данных
- •Вычисление агрегатных функций
- •Группировка данных
- •Ограничение для групп данных
- •Выборка из нескольких таблиц
- •Соединение отношений
- •Выборка из нескольких таблиц
- •Соединение отношений
- •Запрос с соединением, использующий from и where
- •Запрос с соединением join
- •Запрос с соединением, использующий from и where
- •Запрос с соединением join
- •Операции с таблицами
- •Изменение структуры таблицы
- •Удаление таблицы
- •Действия со строками
- •Вставка строк в таблицу
- •Изменение данных в таблице
- •Удаление данных из таблицы
- •Инструкция transform
- •In ("Физика", "Математика");
- •Глава 5 Работа с формами
Вычисление агрегатных функций
Помимо математических операций, в запросах SQL можно применять агрегатные функции. К таким функциям относятся следующие:
-
COUNT - отображает количество строк;
-
SUM - находит сумму значений;
-
AVG - вычисляет среднее значение;
-
МАХ - находит максимальное значение;
-
MIN - находит минимальное значение.
Перечисленные функции используются в предложении SELECT в качестве имен столбцов. Сами же имена столбцов указываются как аргументы этих функций.
Необходимо учитывать, что функции SUM и AVG могут оперировать только числовыми полями, a COUNT, МАХ и MIN оперируют и числовыми, и символьными полями. В случае применения функций МАХ или MIN к символьному полю они будут сравнивать его эквивалент в кодировке ASCII. При этом в качестве результата для функции MIN будет отображено первое, а для функции МАХ - последнее значение поля, отсортированного в алфавитном порядке. Далее работа с каждой из этих функций будет рассмотрена более детально.
Функция COUNT предназначена для отображения количества строк или не-NULL значений полей, которые выбрал запрос. Она имеет следующий синтаксис:
COUNT ([ALL | DISTINCT] expression);
где: expression - задает имя столбца или выражение;
ALL - указывает на необходимость учета всех значений столбца, кроме NULL;
DISTINCT - служит для запрета повторяющихся или неопределенных значений. Они функцией не учитываются.
Например, требуется подсчитать, сколько студентов учится в вузе. Для этого можно составить следующий запрос:
SELECT COUNT (fIDStudent) AS "Всего студентов"
FROM tbIStudents;
Функция SUM вычисляет арифметическую сумму всех выбранных значений для поля, указанного в качестве аргумента:
SUM ([ALL | DISTINCT] expression);
Например, для того чтобы подсчитать суммарную стоимость имеющихся в продаже моделей товаров (рассмотренная выше таблица tbIGoods), следует воспользоваться таким запросом:
SELECT SUM (fPriceGoods*fQuantityGoods) AS "Суммарная стоимость"
FROM tbIGoods;
Функция AVG предназначена для вычисления среднего от всех выбранных значений. Она имеет такой синтаксис:
AVG ([ALL | DISTINCT] expression);
Так, при помощи этой функции можно вычислить среднюю стоимость процессоров из модельного ряда, представленного компанией для продажи (таблица tbIGoods). Для этого необходимо выполнить следующий запрос:
SELECT AVG (fPriceGoods) AS "Средняя стоимость"
FROM tbIGoods
WHERE fNameGoods = ’Processor';
Функция MAX служит для нахождения наибольшего из всех значений, выбранных для указанного поля. Функция имеет следующий синтаксис:
MAX (expression);
Например, требуется найти самого младшего студента (т.е. студента, для которого значение поля fBirthday является максимальным). Для этого необходимо в качестве аргумента функции МАХ указать поле fBirthday:
SELECT fLastName, fFirstName, fMiddleName, MAX (fBirthday) FROM tbIStudents;
Функция MIN служит для определения наименьшего из всех значений, выбранных для указанного поля. Функция имеет следующий синтаксис:
MIN (expression);
Например, чтобь* найти самого старшего студента (для которого значение поля fBirthday минимально), следует воспользоваться таким запросом:
SELECT fLastName, fFirstName, fMiddleName, MIN (fBirthday) FROM tbIStudents;
Как было отображено в синтаксисе каждой из перечисленных функций, в качестве аргумента может выступать некоторое выражение. Можно использовать агрегатные функции с аргументами, которые состоят из скалярных выражений, содержащих одно или более полей.
Примечание. Если в качестве аргумента агрегатной функции используется скалярное выражение, включающее одно или более полей таблицы, применение ключевого слова DISTINCT запрещено.
Например, вычислим суммарную стоимость всех продаваемых товаров (таблица tbIGoods). Для этого вначале необходимо для каждого товара умножить его цену (fPriceGoods) на количество (fQuantityGoods). Затем следует просуммировать получившиеся для каждой модели стоимости:
SELECT SUM(fPriceGoods*fQuantityGoods) AS "Суммарная стоимость товара"
FROM tbIGoods;