Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

БД / Базы данных / Лабораторные работы / Лабораторная №11(Запросы на группирование)

.doc
Скачиваний:
61
Добавлен:
30.05.2015
Размер:
575 Кб
Скачать

Лабораторная работа № 10.

Тема: Запросы в Access(Запросы на группирование)

Запросы на группирование.

Этот тип запросов позволяет нам определить группы записей на основе значений одного или несколько полей и для этих групп вычислить групповые характеристики (например, количество записей входящих в каждую группу или суммарное значение некоторой характеристики для этой группы).

Например, если мы сгруппируем таблицу Продукты по ТипуПродуктов, то у нас получится 5 групп (столько у нас категорий продуктов).

Результатом этого запроса будет следующая таблица:

По умолчанию, поле задания параметра группировки является скрытым, но если, имея какой-нибудь запрос в режиме конструктора, обратиться в системное меню ВИД и кликнуть там мышью по режиму ГРУППОВЫЕ ОПЕРАЦИИ, то в бланке запроса появится дополнительная строка с аналогичным наименованием.

По умолчанию, в строке " Групповые операции" СУБД устанавливает условие "Группировка", в соответствие с которым данные по каждому полю группируются, но результат не выводится. Если же нужен некий конкретный результат, то вместо "группировки" следует применить одну из девяти групповых функций (см. таблицу).

Наименование

Назначение

SUM

Вычисляет сумму всех значений заданного поля в каждой группе. Применяется только для числовых и денежных полей.

AVG

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

MIN

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

MAX

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

COUNT

Возвращает число записей, в которых значение данного поля отличается от Null. Хотя при использовании конструкции Count (*) можно подсчитать число всех записей, включая "нулевые".

STDEV

Подсчитывает статистическое стандартное отклонение для всех значений данного поля в каждой группе. Функция применяется только для числовых и денежных полей. Если в группе менее двух записей, возвращается значение Null.

VAR

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

FIRST

Возвращает первое значение этого поля в группе.

LAST

Возвращает последнее значение этого поля в группе.

Кроме стандартных, в Access допустимы и два дополнительных варианта: "Выражение" и "Условие".

Выбрав вариант "Выражение" в строке "Поле", можно задать конкретное выражение, например Max [(наименование поля)] - Min[(наименование поля)], на соответствие с которым программа должна проводить проверку. В данном случае она покажет максимальную величину разброса некоторого параметра, хранимого в данном поле. Выбор "Условия" активизирует ссылку на строку " Условие отбора", что позволяет в значительной мере расширить число возможных комбинаций вариантов выполнения групповых операций. Так, например, применение режима "Условие" в графе " Калории" позволяет сначала получить из общего массива только конкретные данные, а уже к ним применить всю мощь аппарата запросов Access, причем сделать все это в одном запросе, а не в несколько приемов.

Задание.

  1. Подсчитайте количество продуктов каждого типа. Отсортируйте по количеству продуктов (Таблица Продукты).

  2. Подсчитайте, на какую сумму сделаны заказы продуктов

  3. Определите сети магазинов (несколько магазинов с одним названием). В какой сети больше всего магазинов

  4. В какие магазины заказали одинаковые продукты

Указания. Этот запрос выполняется в два этапа:

  • На первом этапе находим, какие одинаковые продукты были заказаны. Этот запрос выполняется по таблицы ПродуктыЗаказа

Результирующая таблица будет следующая:

Далее, для того чтобы найти магазины, в которые отпускали эти продукты, необходимо создать многотабличный запрос, в котором будет использоваться только что построенный запрос:

Перекрестный запрос.

Это специальный тип запроса, в котором можно группировать по строкам и столбца. Для создания этого запроса нужно создать новую таблицу Сотрудники, содержащую следующие данные:

Фамилия
Месяц
Заработок

Иванов

Январь

350

Петров

Январь

600

Сидоров

Январь

250

Иванов

Январь

400

Иванов

Январь

370

Сидоров

Январь

300

Иванов

Февраль

500

Петров

Февраль

380

Сидоров

Февраль

320

Сидоров

Февраль

500

Таблицу Сотрудники создайте путем Ввода данных. Переименуйте столбцы, чтобы они назывались соответствующим образом. Сохраните, создав автоматически первичный ключ.

Из анализа таблицы можно увидеть, что сотрудникам закрывают наряды на зарплату несколько раз в месяц (по мере выполнения работы) и учет ведется по месяцам. Было бы очень удобно увидеть, какие суммы заработал каждый сотрудник в каждом месяце. Для этого и служат перекрестные запросы.

Создание перекрестного запроса в режиме мастера.

Выбираем тип нового запроса Перекрестный запрос.

Выполните следующие действия:

  1. Выберите таблицу Сотрудники

  2. Выберите поле Фамилия в качестве заголовков строк в перекрестной таблице

  3. Выберите поле Месяц в качестве заголовков столбцов в перекрестной таблице

  4. Задайте в следующем окне поле Зарплата и тип вычисления Сумма

И готово!

В результате вы получите вот такую перекрестную таблицу.

Откройте таблицу в режиме конструктора вы увидите следующее:

Внимание! Посмотрите какие новые строки добавлены в бланк таблицы.

Создание перекрестного запроса в режиме конструктора.

Для создания запроса в режиме конструктора задайте имя таблицы Сотрудники, откройте пустой бланк запроса и установите тип запроса Перекрестный через контекстное меню или выбрав из списка на панели инструментов. После этого определите столбцы Фамилия, Месяц, Зарплата и вычисляемое поле Итог: Зарплата.

В строке Групповая операция задайте для первых двух столбцов Группировка, для остальных двух – SUM.

В строке Перекрестная таблица задайте для 1-го столбца – заголовки строк, 2-го столбца – заголовки столбцов, 3-го – значения, 4-го – заголовки строк.

Посмотрите полученный результат.

Задание.

  1. Создайте многотабличный запрос по таблицам Продукты, ПродуктыЗаказа, Заказы, Магазины. Результирующие столбцы – Название продуктов, Название магазинов и Количество продуктов. Сделайте перекрестную таблицу для получения информации о том, какое количество продуктов одного наименования было заказано магазинами.