Функции SUM, AVG применимы только к числовым полям. Функции COUNT, MAX, MIN могут использоваться для числовых и символьных полей.

 

Пример 8. Проанализировать популярность у вкладчиков видов вкладов предоставляемых банком.

 

SELECT [Код вклада], Sum([Сумма вклада]) AS [Сумма вкладов], Avg([Сумма вклада]) AS [Среднее значение вклада]

FROM Сведения

GROUP BY [Код вклада];

 

Код вклада Сумма вкладов Среднее значение вклада
ВД 7666,67
ВДН 12333,33
ВДС 7333,33
ТВ 23666,67

 

Здесь группировка данных с вычислением итогов производится по одному полю [Код вклада].

Каждая группа состоит из всех тех строк, которые имеют одно и то же значение поля [Код вклада], а функции SUM и AVG применяется отдельно к каждой такой группе. Это означает, что поле, к которому применяется GROUP BY, по определению имеет на выходе только одно значение на каждую группу, что соответствует применению агрегатных функций. Таким образом, все записи базы, для которых значения полей совпадают, отображаются в выборке единственной строкой.

Возможна группировка по нескольким полям.

Пример 9. Проанализировать популярность у вкладчиков видов вкладов предоставляемых банком. Вывести полную информацию по видам вкладов.

 

 

SELECT[Вид вклада], [Ставка %] AS [Процентная ставка], Sum([Сумма вклада]) AS [Общая сумма вкладов], Avg([Сумма вклада]) AS [Среднее значение вклада]

FROM Справочник, Сведения

WHERE (((Справочник.Код)=[Сведения].[Код вклада]))

GROUP BY[Вид вклада], [Ставка %];

 

Вид вклада Процентная ставка Общая сумма вкладов Среднее значение вклада
Валютный депозит 7666,67
Валютный депозит накопительный 12333,33
Валютный депозит срочный 7333,33
Валютный текущий 23666,67

Пример 10. Проанализировать вклады за истекшие месяцы.

В этом случае нужно сгруппировать данные по дате, выделив из дат параметр «месяц».

Для работы с данными типа Дата/время SQL располагает специальными функциями

Day– выделяетчисло-номер днямесяца введенной даты

Month- выделяетчислономермесяцадаты

Year- выделяетчислономергодадаты.

SELECT Month(Дата) AS Месяц, Count([Сумма вклада]) AS [Количество вкладов], Avg([Сумма вклада]) AS [В среднем на вкладе], Sum([Сумма вклада]) AS [Итого за месяц]

FROM Сведения

GROUP BY Month(Дата);

Месяц Количество вкладов В среднем на вкладе Итого за месяц

Пример 10_1. Проанализировать вклады за январь 2009 г.

В этом случае нужно сгруппировать данные по дате, а затем из получившихся групп выбрать ту, у которой значение даты =1, что соответствует месяцу январь.

Функцию отбора данных из групп выполняет параметр HAVING. Он определяет критерий, согласно которому определенные группы исключаются из числа выходных данных так же, как параметр WHERE делает это для отдельных строк. HAVING является необязательным параметром, но если он задан, то должен следовать за параметром GROUP BY.

 

SELECT Month(Дата) AS Месяц, Count([Сумма вклада]) AS [Количество вкладов], Avg([Сумма вклада]) AS [В среднем на вкладе], Sum([Сумма вклада]) AS [Итого за январь]

FROM Сведения

GROUP BY Month(Дата)

HAVING (Month(Дата)=1);

 

Месяц Количество вкладов В среднем на вкладе Итого за январь

 

Пример 10_2. Проанализировать вклады за период с января по март 2009г.

SELECT Month(Дата) AS Месяц, Sum([Сумма вклада]) AS [В среднем за месяц], Min([Сумма вклада]) AS [Min вклад], Max([Сумма вклада]) AS [Max вклад]

FROM Сведения

GROUP BY Month(Дата)

HAVING (((Month([Дата])) Between 1 And 3));

Месяц В среднем за месяц Min вклад Max вклад

 

Упорядочивание выходных полей

Таблицы базы данных являются неупорядоченными множествами, и выбираемые из них данные необязательно представлены в какой-либо определенной последовательности.

Команда ORDER BY позволяет упорядочить выходные данные запроса в соответствии со значениями одного или нескольких выбранных столбцов. Можно задать возрастающую (ASC) или убывающую (DESC) последовательность сортировки для каждого из столбцов. По умолчанию установлена сортировка по возрастанию, т.е. параметр ASC можно не указывать. Внутри уже упорядоченной по одному полю таблицы можно провести упорядочение и по другому столбцу.

Пример 11. Вывести сведения о вкладчиках, упорядочив выходной набор по полю Дата по возрастанию, а по полю Сумма вклада – по убыванию:

SELECTДата, [Сумма вклада], ФИО

FROMСведения

ORDERBYДата, [Сумма вклада]DESC;

Дата Сумма вклада ФИО
05.01.2009 Богданова О.
05.01.2009 Купцова С.
05.01.2009 Костин В.
10.01.2009 Суворов А.
02.02.2009 Пугачева А.
02.02.2009 Орлова И.
02.02.2009 Михайлова А.
02.02.2009 Сергеев И.
02.02.2009 Петрова И.
02.02.2009 Разин А.
01.03.2009 Соколова Н.
04.03.2009 Архипов Н.

Вложение запросов

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