Группировка результатов запроса
Исходные данные в запросе могут быть сгруппированы с помощью агрегатных функций, указанных в качестве полей в списке выборки. Это означает, что строки в результате запроса будут содержать результаты вычисления указанных агрегатных функций, рассчитанные (сгруппированные) по записям исходных таблиц.
Сами агрегатные функции указываются в списке полей выборки; в предложении СГРУППИРОВАТЬ ПО <Поля группировки> необходимо указать список полей, по которым следует произвести группировку. В запросе будут группироваться записи исходных таблиц, содержащие одинаковые значения указанных полей.
Список полей группировки содержит ссылки на поля исходных таблиц - источников запроса, указанные через запятую:
<Разыменование поля> [, <Разыменование поля> [, ...] ]
Важно! При группировке результатов запроса в списке полей выборки обязательно должны быть указаны агрегатные функции, а помимо агрегатных функций в списке полей выборки допускается указывать только поля, по которым осуществляется группировка.
Исключение составляют ситуации, когда агрегатные функции применены к полям вложенной таблицы В этом случае в списке полей выборки возможны обращения к полям таблицы верхнего уровня, без группировки результатов по этим полям.
При использовании агрегатных функций предложение СГРУППИРОВАТЬ ПО может быть и не указано совсем; при этом все результаты запроса будут сгруппированы в одну единственную строку.
Пример:
// Требуется получить статистику по продаже товаров:
// максимальную, минимальную и среднюю цены в расходных накладных.
Выбрать
Накладная.Номенклатура,
Среднее (Накладная.Цена) Как Среднее,
Максимум (Накладная.Цена) Как Максимум,
Минимум (Накладная.Цена) Как Минимум
Из
Документ,РасходнаяНакладная.Состав Как Накладная
Сгруппировать По
Накладная. Номенклатура
Результат запроса:
Номенклатура | Среднее | Максимум | Минимум |
Брюки детские | 1 500 | 1 500 | 1 500 |
Рубашка «Ковбойка» | 800 | 800 | 800 |
Джинсы женские | 1 520 | 1 700 | 1 500 |
Свитер детский | 800 | 800 | 800 |
Раковина Лилия | 2 250 | 2 250 | 2 250 |
Мойдодыр «Аквариум» | 3 166,666667 | 4 000 | 2 000 |
Смеситель Ультра | 1 500 | 1 500 | 1 500 |
Кухонный комбайн Крупс | 1 500 | 1 500 | 1 500 |