- •Задание 3. Запросы в ms access
- •1. Запросы
- •1.1. Типы запросов
- •2. Запросы на выборку
- •2.1. Создание простого запроса
- •2.2. Простые запросы с использованием Конструктора запросов
- •2.2.1. Перемещение в окне Конструктора запросов
- •2.2.2. Бланк запроса
- •2.2.3. Выбор поля
- •2.2.4. Изменение порядка расположения полей
- •2.2.5. Запуск запроса
- •2.2.6. Сохранение запроса
- •2.3. Вычисления в запросе
- •2.3.1. Типы выражений в Access
- •2.3.1.1. Операторы
- •Строковые операторы
- •Оператор конкатенации (&)
- •Оператор Like
- •Выражение Like шаблон
- •Логические операторы
- •Приоритет операторов
- •2.3.1.2. Функции
- •Функции преобразования типа
- •Функции даты и времени
- •Статистические функции sql
- •2.4. Выполнение запросов с использованием простейших процедур вычислений
- •2.5. Вычисляемые поля
- •2.5.1. Конструирование выражения в строке поля
- •[Фамилия]&" "&[Имя]
- •2.5.2. Использование Построителя выражений
- •Int(Now()-[Дата приема])
- •Int((Now()-[Дата приема])/360)
- •2.5.3. Свойства полей
- •2.6. Критерии выборки в запросе
- •2.7. Оператор Like и символы подстановки в запросах
- •2.8. Запросы с Итоговыми значениями
- •2.8.1. Групповые функции
- •Max ([Зарплата]) – Min ([Зарплата])
- •2.8.2. Выбор записей в группах
- •3. Параметрические запросы
- •4. Запросы к нескольким таблицам
- •6. Задания по разделу
- •7. Итоговые задания по разделу
2.7. Оператор Like и символы подстановки в запросах
Очень часто при выполнении запроса известна только часть содержимого поля Для этой цели Access предлагает воспользоваться оператором «Like» и символами подстановки (п.2.3.1.1.).
Для выполнения отбора данных с использование оператора «Like» вы должны указать в ячейке «Условия отбора» того поля по содержимому, которого будет вестись отбор записей. Таким образом, Access будет выполнять поиск в заданном поле по «Маске».
Задание. Вы решили дать премию только Агентам.
Откройте в режиме Конструктора запрос «Расчет премии Запрос».
Щелкните на строке «Условия отбора» поля «Должность»
Введите в эту строку «Like А*»
Выполните запрос
Уберите из запроса оператор «Like А*».
Закройте запрос.
2.8. Запросы с Итоговыми значениями
Очень часто мы хотим получить информацию из базы данных не о конкретной записи (или их наборе по какому-то критерию), а итоговые значения по группам данных. Для этого можно использовать процедуру - Итоговый Запрос.
Задание. Вы захотели узнать, какую величину премии получили отделы фирмы и сколько сотрудников каждого подразделения получили премию?
Откройте в режиме Конструктора запросов «Расчет премии Запрос».
Удалите поля «Имя», «Должность», «Дата приема», «Премия».
Для получения итоговых значений по группе:
Щелкните на кнопке «Итоги» панели инструментов Конструктора запросов. В результате в бланке запросов добавится строка «Групповые операции».
После первого щелчка на кнопке «Групповые операции» Access по умолчанию использует установку Группировка в строке «Групповая операция». Если вы сейчас щелкните на кнопке кнопку «Запуск», то в итоге получите набор записей, содержащий по одной строке для уникального значения полей запроса, – но без итогов.
Для того, чтобы получить итоги, необходимо в строке «Групповая операция» заменить установку по умолчанию Группировка на определенные Групповые функции.
2.8.1. Групповые функции
Access предоставляет в наше распоряжение для выполнения девять функций. Вы можете набрать эту функцию в строке «Групповая операция», или выбрать ее из раскрывающегося списка функций.
|
Функция |
Выполняемая операция |
|
Sum |
Вычисление суммы всех значений заданного поля для каждой группы. Функция используется только для числовых и денежных полей. |
|
Avg |
Вычисление среднего значение в каждой из групп заданного поля. Функция используется только для числовых и денежных полей. |
|
Min |
Находится наименьшее значение в каждой группе заданного поля. Для числовых полей возвращается наименьшее значение, а для текстовых – наименьшее из символьных значений не зависимо от регистра (нулевые значения исключаются). |
|
Max |
Находится наибольшее значение в каждой группе заданного поля. Для числовых полей возвращается наибольшее значение, а для текстовых – наибольшее из символьных значений не зависимо от регистра. (нулевые значения исключаются). |
|
Count |
Возвращается число записей, значение которых отличны от нуля, в каждой группе заданного поля. Для подсчета числа записей с учетом нулевых значений в строку «Поле№» необходимо ввести выражение «Count(*)». |
|
StDev |
Рассчитывает стандартное отклонение для всех значений заданного поля в каждой группе. Используется только для числовых полей или полей денежного типа. |
|
Var |
Рассчитывает величину дисперсии для всех значений заданного поля в каждой группе. Используется только для числовых полей или полей денежного типа. |
|
First |
Возвращает первое значение поля в каждой группе. |
|
Last |
Возвращает последнее значение поля в каждой группе. |
Вновь возвращаемся к нашему примеру.
Щелкните правой кнопкой в колонке «Фамилия» и в открывшемся контекстном меню выберите команду «Свойства».
В поле «Подпись» окна «Свойства» введите новое название поля таблицы, например, «Кол. Сотрудники»
Щелкните в строке «Групповая операция» и в открывшемся списке функций выберите «Count» для подсчета количества человек в отделе, получивших премию.
В строке «Групповая операция» колонки «Подразделение» оставьте «Группировка», так как мы намерены получить итоговые значения по каждому подразделению.
В строке «Групповая операция» колонки «Зарплата» в списке функций выберите «Sum» для подсчета суммы начисленных премий по группе.
После выполнения всех операций окно Конструктора запросов и набор записей.
Обратите внимание, что в списке строки «Групповая операция» имеется установка «Выражение». Используя эту установку, в строку «Поле» можно ввести выражение, в котором используется несколько групповых функций. Например, если вы хотите вычислить размах значений заработной платы (размах значений поля), вы можете ввести следующее выражение:
