Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ФОРМАТИРОВАНИЕ СВОДНОЙ ТАБЛИЦЫ.docx
Скачиваний:
8
Добавлен:
12.04.2015
Размер:
188.49 Кб
Скачать

Вычисление агрегатных функций

Помимо математических операций, в запросах SQL можно применять агрегатные функции. К таким функциям относятся следующие:

  • COUNT - отображает количество строк;

  • SUM - находит сумму значений;

  • AVG - вычисляет среднее значение;

  • МАХ - находит максимальное значение;

  • MIN - находит минимальное значение.

Перечисленные функции используются в предложении SE­LECT в качестве имен столбцов. Сами же имена столбцов указы­ваются как аргументы этих функций.

Необходимо учитывать, что функции 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;