Оглавление:
- Основы работы.
- Параметры и операторы сравнения.
- Условия отбора.
- Группировки.
- Итоги.
- Вложенные запросы.
Группировки в запросах 1С применяются, когда необходимо свернуть таблицу, получаемую из источника данных по какому-либо столбцу (группировочный столбец) а со значениями другого столбца (группируемый столбец) произвести некие математические или статистические действия, например подсчитать сумму.
Развернуть группировку после выполнения запроса и узнать, какие строки в нее вошли, после выполнения запроса невозможно (в отличие от применения Итогов).
При использовании группировок все столбцы в запросе делятся на группируемые и группировочные, не должно оставаться столбца, который не принадлежит ни к одной из категорий. Вместе с тем, группируемых столбцов может не быть, если все столбцы относятся к группировочным, и наоборот, может не быть группировочных столбцов, если все относятся к группируемым.
Группировочные столбцы обозначаются в особой секции запроса, которая начинается с фразы СГРУППИРОВАТЬ ПО. Группируемые столбцы обозначаются через агрегатные функции в секции ВЫБРАТЬ.
Существует 6 видов агрегатных функций, применяемых при группировках:
- СУММА — суммирует значения группируемого столбца, применяется только для числовых значений.
- СРЕДНЕЕ — вычисляет среднее арифметическое из значений группируемого столбца, применяется только для числовых значений.
- МАКСИМУМ — может применяться для любых типов значений группируемого столбца, при этом возвращается максимальное значение из всех группируемых. Если значения не числовые, то возвращается последнее при сортировке по возрастанию.
- МИНИМУМ — может применяться для любых типов значений группируемого столбца, при этом возвращается минимальное значение из всех группируемых. Если значения не числовые, то возвращается первое при сортировке по возрастанию.
- КОЛИЧЕСТВО — возвращает количество значений в группируемом столбце, может использоваться для любых типов значений. В расчет не берутся значения типа NULL.
- КОЛИЧЕСТВО РАЗЛИЧНЫЕ — возвращает количество различных значений в группируемом столбце, может использоваться для любых типов значений. В расчет не берутся значения типа NULL.
Полям запроса, к которым применены агрегатные функции обязательно назначаются псевдонимы.
Об особенностях применения условий отбора в запросах с группировками читайте в статье Запросы 1С:Предприятие 8. Условия отбора.
Рассмотрим применение группировок в запросах 1С на примерах.
Источником данных будет таблица покупок товаров Поставки, в которой отражены операции поставки товара (каждая поставка в отдельной строке):
Задача 1.
Узнать, какие поставщики поставляли товары.
Решение: Одним из вариантов решений может быть выбор единственного стобца Поставщик и группировка по нему.
Поставки.Поставщик
ИЗ
Поставки КАК Поставки
СГРУППИРОВАТЬ ПО
Поставки.Поставщик";
Задача 2.
Узнать общее количество поставленного товара каждого вида.
Решение: Необходимо выбрать два столбца: товар и количество, сгруппировать полученный результат по полю Товар, применив агрегатную функцию Сумма.
Поставки.Товар,
СУММА (Поставки.Количество) КАК Количество
ИЗ
Поставки КАК Поставки
СГРУППИРОВАТЬ ПО
Поставки.Товар";
Задача 3.
Определить, сколько в среднем единиц товара поставляет каждый поставщик.
Решение: Необходимо выбрать два столбца: поставщик и количество, сгруппировать полученный результат по полю Поставщик, применив агрегатную функцию Среднее.
Поставки.Поставщик,
СРЕДНЕЕ (Поставки.Количество) КАК Количество
ИЗ
Поставки КАК Поставки
СГРУППИРОВАТЬ ПО
Поставки.Поставщик";
Задача 4.
Подсчитать количество операций по поставке товара.
Решение: Можно выбрать любой столбец и применить к нему агрегатную функцию Количество.
КОЛИЧЕСТВО (Поставки.Количество) КАК КоличествоПоставок
ИЗ
Поставки КАК Поставки";
Задача 5.
Подсчитать количество поставщиков нашей организации.
Решение: Выбрать столбец Поставщик и применить к нему агрегатную функцию Количество Различные.
КОЛИЧЕСТВО (РАЗЛИЧНЫЕ Поставки.Поставщик) КАК КоличествоПоставщиков
ИЗ
Поставки КАК Поставки";