
- •Санкт-Петербургский
- •Оглавление
- •5. Формы 25
- •3. Таблицы
- •3.1. Создание структуры таблицы
- •3.2. Загрузка таблицы данными
- •3.3. Модификация структуры таблицы
- •3.4. Работа с макетом таблицы
- •3.5. Схема данных
- •3.6. Печать таблицы
- •4. Запросы
- •4.1.Типы запросов
- •4.2.Создание qbe-запроса
- •4.3. Заполнение бланка запроса
- •4.4. Работа с построителем выражений
- •4.5. Редактирование запроса
- •4.6. Печать динамического набора данных
- •4.7. Примеры запросов
- •4.7.1. Запрос на выборку данных
- •4.7.2.Запрос с параметром (параметрический запрос)
- •4.7.3. Запрос на создание таблицы
- •4.7.4. Запросы на изменение данных
- •4.7.4.1. На добавление записей
- •Insert into Детали (номерд, имяд, цена )
- •Insert into Детали (номерд, имяд, цена )
- •Values ( 15, “ролик”,150);
- •Insert into Новая ( [номер поставщика], [номер детали], [имя детали], [город] )
- •4.7.4.2. Запрос на удаление записей
- •4.7.4.3. Запрос на обновление (корректировку) данных
- •4.7.5. Группирование данных в запросе
- •4.7.6. Перекрестный запрос
- •4.7.7. Подчиненные (вложенные) запросы
- •4.8.Фильтрация данных
- •5. Формы
- •5.1. Создание однотабличной формы
- •5.2. Редактирование формы
- •5.3. Часто используемые свойства формы
- •5.4. Элементы управления и их свойства
- •6. Отчеты
- •6.1. Создание отчета
- •6.2. Работа с отчетом в режиме конструктора
- •6.3. Сортировка и группировка данных
- •7. Макросы
- •7.1. Создание макросов
- •7.2. Краткая характеристика макрокоманд
- •7.3. Групповые макросы
- •7.4. Реализация ветвлений в макросах
- •7.4.1. Примеры макросов с односторонним ветвлением
- •7.4.2. Пример макроса с двусторонним ветвлением
- •7.5. Реализация циклов в макросах
- •8. Основы создания пользовательского интерфейса
- •8. 1. Взаимодействие форм
- •Интерфейс.Открыть просмотр
- •Интерфейс.Открыть редактирование
- •Интерфейс.Закрыть просмотр
- •8. 2. Создание кнопочных меню с помощью диспетчера кнопочных форм
- •8. 3. Создание пользовательских меню
- •8. 3.1. Создание пользовательских меню с помощью макросов
- •8. 3.2. Создание пользовательских меню с помощью своей панели инструментов
4.7.5. Группирование данных в запросе
Группирование данных позволяет получать статистическую, итоговую и др. информацию по отдельным группам данных. Группировать данные можно по одному или нескольким полям. При этом в одну группу включаются данные с одинаковыми значениями в поле группирования. Например, все записи, сгруппированные по номеру поставщика, образуют столько групп, сколько имеется разных значений в поле номерпоставщика.
При работе с группами данных в бланк запроса нужно добавить строку Групповаяоперация:
Вид/Групповые операции или кн.ГрупповыеоперациинаПИили изк.з.меню , открытого в нижней части бланка запроса.
Для каждого поля в строке Групповаяоперацияможет быть выбрано:
Группировка- означает, что данное поле является полем группирования (устанавливается по умолчанию)
Sum- суммирование всех значений поля по группе данных
Avg- среднее значение поля по группе
MinилиMax- минимальное или максимальное значение поля в группе
Count- количество записей, входящих в группу
StDev-среднеквадратическое отклонение
Var- дисперсия
FirstилиLast- первое или последнее значение поля в группе
Выражение- позволяет ввести выражение вместо имени поля в строкеПолебланка запроса
Условие- показывает, что это поле используется только для задания условия отбора данных в запросе . Это поле не отображается в динамическом наборе данных.
Если группировка производится по нескольким полям , то слово Группировкадолжно быть в каждом из них.
Пример 10. Группирование данных по одному полю. Однотабличный запрос
Сгруппировать данные по полю номерпв таблицеПоставкии вычислить
количество записей в каждой группе и суммарное количество поставляемых деталей для каждой группы поставщиков.
Создание QBE- запроса:
создать запрос на выборку данных из таблицы Поставки, отобразив в динамическом наборе поля:номерп,номерд,количество.
добавить в бланк запроса строку Групповыеоперации
отобразить в этой строке для каждого из перечисленных выше полей значения: Группировкадля поляномерп,Countдля поляномерд,Sumдля поляколичество.
Однотабличный SQL- запрос:
SELECT Поставки.номерп, Count(Поставки.номерд) AS Count_номерд, Sum(Поставки.количество) AS Sum_количество
FROM Поставки
GROUP BY Поставки.номерп;
Имена полей можно изменить, отредактировав запрос в окне SQL, например так:
SELECT Поставки.номерп AS [номер поставщика],
Count(Поставки.номерд)AS [количество записей], Sum(Поставки.количество) AS [суммарное количество]
FROM Поставки
GROUP BY Поставки.номерп;
Исполнив запрос, получим следующий динамический набор данных:
Номер поставщика |
количество записей |
суммарное количество |
1 |
3 |
270 |
2 |
2 |
350 |
3 |
2 |
250 |
4 |
1 |
50 |
Пример 11. Группирование данных по двум полям. Однотабличный запрос
из таблицы Поставщикисначала по полюномерп, затем по полюстатус, а для полягородиспользуем функциюCount.
Соответствующий однотабличныйSQL - запрос:
SELECT Поставщики.имяп, Поставщики.статус, Сount(Поставщики.город) AS [количество записей]
FROM Поставщики
GROUP BY Поставщики.имяп, Поставщики.статус;
Исполнив запрос, получим следующий динамический набор данных:
имяп |
статус |
количество записей |
Иванов |
80 |
2 |
Иванов |
100 |
1 |
Петров |
100 |
1 |
Сидоров |
80 |
1 |
Пример 12. Группирование данных по одному полю. Многотабличный запрос
SELECT Поставки.номерд, First(Детали.имяд) AS [имя детали], Count(Поставки.номерп) AS [кол поставщиков], Sum([Детали]![цена]) AS [сум цена], Sum([Поставки]![количество]) AS [сум кол деталей], Sum([Детали]![цена]*[Поставки]![количество]) AS [общая стоимость]
FROM Детали INNER JOIN Поставки ON Детали.номерд = Поставки.номерд
GROUP BY Поставки.номерд;
|
НомерДет |
First_dim |
кол поставщиков |
сум цена |
сум кол деталей |
общая стоимость | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
|
|
|
|
| ||||||||||||
|
|
|
|
|
|
| ||||||||||||
|
|
|
|
|
|
| ||||||||||||
|
|
|
|
|
|
|
1 |
гайка |
2 |
200,00 р. |
200 |
20 000,00 р. |
2 |
болт |
3 |
450,00 р. |
350 |
52 500,00 р. |
3 |
шайба |
2 |
100,00 р. |
350 |
17 500,00 р. |
4 |
гайка |
1 |
200,00 р. |
20 |
4 000,00 р. |