Построение запроса с группированием записей и использованием статических функций
⇐ ПредыдущаяСтр 3 из 3
Задача №7. Выдать список сотрудников и количество детей каждого сотрудника. Эта задача может быть решена на основе запроса Личная_Дети подсчетом записей, имеющих одинаковые значения в поле ФИО. Для подсчета записей надо сгруппировать записи по полю ФИО и создать новое поле, в которое будет помещен результат подсчета. Порядок работы: Ø В окне базы данных для объекта Запросы выберите Создать, затем Конструктор. Ø Добавьте запрос Личная_Дети в окно конструктора. Нажмите кнопки Добавить, Закрыть. Ø В бланке запросов в строке Поле выберите ФИО. Ø Щелкните правой кнопкой мыши на поле ФИО и выберите Групповые операции. В результате появится строка Групповые операции и слово Группировка для поля ФИО. Это означает, что будет выполняться группирование записей, имеющих одинаковые значения в Поле ФИО. Количество детей сотрудника равно количеству повторений его фамилии в таблице. Ø В строке Сортировка для поля ФИО откройте список и выберите режим сортировки По возрастанию. Ø Для того чтобы подсчитать количество записей с одинаковыми фамилиями и затем отобразить их в таблице, создайте дополнительное поле – в строке Поле во втором столбце напишите: ФИО. Ø Щелкните правой кнопкой мыши на втором столбце и выберите Групповые операции, а затем откройте список Группировка и выберите статическую функцию COUNT – подсчет количества записей в группе. Ø Задайте альтернативное имя для второго поля ФИО. Для этого щелкните правой кнопкой на этом поле и выберите пункт Свойства. Откроется диалоговое окно Свойства поля (рис.17). Щелкните в строке Подпись и нажмите комбинацию клавиш SHIFT+F2 для расширения области ввода (рис.18). Введите текст Количество детей, нажмите кнопку ОК. Закройте окно Свойства поля.
Рис.17
Рис.18
Ø Сохраните запрос под именем Количество детей (Файл ® Сохранить как). Ø Щелкните кнопку Запуск на панели инструментов. Результат на рис.19 Рис.19 Задача №8. Выдать таблицу текущих назначений сотрудников. Таблица РАБОТА содержит записи о всех перемещениях сотрудника. Последнее назначение сотрудника определяется самой поздней датой в поле ДатаРаб в группе записей, относящихся к одному сотруднику. Таким образом, чтобы решить поставленную задачу, надо сделать группировку по полю КодСотр, сортировать записи в каждой группе по возрастанию по полю ДатаРаб и выбрать последнюю запись из каждой группы. Для создания запроса потребуется таблица ЛИЧНАЯ, РАБОТА и ПОДРАЗДЕЛЕНИЯ. Порядок работы: Ø В окне базы данных для объекта Запросы нажмите кнопку Создать®Конструктор. Ø В окно Конструктора добавьте таблицы ЛИЧНАЯ, РАБОТА и ПОДРАЗДЕЛЕНИЯ. Ø В бланк запросов строку Поля перетащите следующие поля: из таблицы ЛИЧНАЯ – КодСотр, ФИО, из таблицы РАБОТА – ДатаРаб, Должность, Оклад, из таблицы ПОДРАЗДЕЛЕНИЯ – НаименПолн. Ø Для поля КодСотр снимите флажок в строке Вывод на экран. Ø Задайте режим группировки из пункта меню Вид®Групповые операции. Ø Для поля ФИО и ДатаРаб задайте сортировку по возрастанию. Ø Для полей ДатаРаб, Должность, Оклад, НаименПолн в строке Групповая операция из списка выберите статистическую операцию LAST (последний), которая означает выбор последнего значения из группы (рис.20).
Рис. 20 Ø Для поля Оклад в строке Условие отбора задайте >0 (больше нуля) – это означает, что уволенных в запрос не включать (в таблице РАБОТА в записи уволенного сотрудника в поле Оклад задается нулевое значение). Ø Проверьте работу запроса, нажав кнопку Вид на панели инструментов и выбрав Режим таблицы.
Ø Если запрос работает правильно, сохраните его с именем Работа_текущая. Результат показан на рис.21. Рис.21 Задача №9. Самостоятельно создайте запрос Работа_Текушая1 по таблицам ЛИЧНАЯ (ФИО - сортировка по возрастанию), РАБОТА (ДатаРаб, Должность, Оклад, Текущий), ПОДРАЗДЕЛЕНИЕ (НаименПолн). Для этого нужно выбрать строки, в которых значение поля Текущий – Истина, а значение поля Оклад – Не нуль (рис.22). Рис.22. Вид Конструктора запроса Работа_Текущая1
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|