Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
VBA_проектор - Лекции по БД.doc
Скачиваний:
12
Добавлен:
15.02.2015
Размер:
2.51 Mб
Скачать

Агрегирование данных

Существуют специальные функции агрегирования:

Функция

Назначение

Avg

Среднее значение поля.

Count

Кол-во записей в таблице, удовлетворяющих условиям.

Max

Максимальное значение поля.

Min

Минимальное значение поля.

Sum

Суммирование численных значений поля.

Пример 8. По таблице Поступление товара найти суммарное количество поставляемого товара. Результат вывести в графу - Итого.

SELECT sum(Поступление) as Итого

FROM [ПОСТУПЛЕНИЕ ТОВАРА];

Результат выполнения запроса

Раздел GROUP BY

Пример 9. На основе таблицы Поступление товара найти наибольшие поступления однотипного товара.

SELECT [ПОСТУПЛЕНИЕ ТОВАРА].[Код товара] , MAX(Поступление) AS [Наибольшее поступление]

FROM [ПОСТУПЛЕНИЕ ТОВАРА]

GROUP BY [ПОСТУПЛЕНИЕ ТОВАРА].[Код товара];

Результат выполнения запроса

Примечание: Если имя поля состоит из двух и более слов, нужно использовать квадратные скобки для идентификатора такого поля.

Раздел HAVING

Пример 10a. На основе таблицы Поступление товара найти наибольшие поступления товаров, превышающие 1000 ед.

SELECT [ПОСТУПЛЕНИЕ ТОВАРА].[Код товара], MAX(Поступление) AS [Наибольшее поступление]

FROM [ПОСТУПЛЕНИЕ ТОВАРА]

GROUP BY [ПОСТУПЛЕНИЕ ТОВАРА].[Код товара]

HAVING MAX(Поступление)>1000;

Результат выполнения запроса

В запросе можно использовать разделы HAVING и WHERE.

Пример 10b. На основе таблицы Поступление товара найти наибольшие поступления товаров, превышающие 1000 ед., которые поступили 14.03.2007

SELECT [ПОСТУПЛЕНИЕ ТОВАРА].[Код товара], Max(Поступление) AS [Наибольшее поступление], [ПОСТУПЛЕНИЕ ТОВАРА].[дата поступления]

FROM [ПОСТУПЛЕНИЕ ТОВАРА]

WHERE [ПОСТУПЛЕНИЕ ТОВАРА].[Дата поступления]=#3/14/2007#

GROUP BY [ПОСТУПЛЕНИЕ ТОВАРА].[Код товара], [ПОСТУПЛЕНИЕ ТОВАРА].[дата поступления]

HAVING Max(Поступление)>1000;

Результат выполнения запроса

Упорядочивание значений полей с помощью раздела order by

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

SELECT *

FROM [ПОСТУПЛЕНИЕ ТОВАРА]

ORDER BY [ПОСТУПЛЕНИЕ ТОВАРА].[Дата поступления], цена DESC;

Результат выполнения запроса

Пример 12. Из таблицы Поступление товара найти наибольшие цены товаров, превышающие 500 евро, соответствующие разным товарам. Упорядочить записи в исходной таблице в порядке убывания сумм.

SELECT [ПОСТУПЛЕНИЕ ТОВАРА].[код товара], Max(цена) AS [наибольшая цена]

FROM [ПОСТУПЛЕНИЕ ТОВАРА]

GROUP BY [ПОСТУПЛЕНИЕ ТОВАРА].[код товара]

HAVING Max(цена)>500

ORDER BY Max(цена) DESC;

Результат выполнения запроса

Соединение таблиц

Операция соединения таблиц – JOIN – самая мощная операция реляционных баз данных.

<имя таблицы><поля>

Соединение таблиц при помощи связей. Внутреннее объединение

Предположим, что таблицы Поступление товара и Товары связаны между собой по полю Код товара

В запросе такое объединение называется симметричным объединением (INNER JOIN).

Операция INNER JOIN

Синтаксис этой операции:

FROM таблица1 INNER JOIN таблица2 ON таблица1.поле1= таблица2.поле2

Пример 13a. Учитывая схему данных, необходимо найти все поступившие товары, цена которых превышает 500 евро.

SELECT ТОВАРЫ.[наименование товара], поступление, [ПОСТУПЛЕНИЕ ТОВАРА].[дата поступления], цена

FROM ТОВАРЫ INNER JOIN [ПОСТУПЛЕНИЕ ТОВАРА] ON ТОВАРЫ.[код товара] = [ПОСТУПЛЕНИЕ ТОВАРА].[код товара]

WHERE цена>500;

Результат выполнения запроса

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]