Функции 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 позволяет вкладывать запросы друг в друга. Обычно внутренний запрос генерирует значения, которые тестируются на предмет истинности предиката. В подзапросах можно использовать функции агрегирования. При использовании подзапросов в предикатах основанных на реляционных операторах необходимо убедиться, что подзапрос выдает только одну строку вывода.



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2016-04-02 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: