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

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 р.


Соседние файлы в папке Материалы для лабораторных Базы данных