Агрегатные функции в запросе

Часто требуется не просто выбрать отдельные записи из базы данных, а получить сводную информацию, например, для ответа на следующие вопросы:

В системе 1С:Предприятие 8.0 такие запросы можно создавать с помощью агрегатных функций, группировок и предложения ИМЕЮЩИЕ (HAVING). Ниже будут описаны агрегатные функции языка запросов.

Любая агрегатная функция принимает в качестве аргумента какой-либо столбец, а возвращает единственное значение. Например, агрегатная функция СУММА (SUM) принимает в качестве аргумента столбец чисел и вычисляет его сумму.

В языке запросов 1С:Предприятия 8.0 существуют следующие агрегатные функции:

СУММА (SUM)

Вычисляет сумму всех значений, содержащихся в столбце.

МАКСИМУМ (МАХ)

Находит наибольшее значение в столбце.

МИНИМУМ (MIN)

Находит наименьшее значение в столбце.

СРЕДНЕЕ (AVG)

Вычисляет среднее арифметическое значение по столбцу.

КОЛИЧЕСТВО (COUNT)

Подсчитывает количество значений, содержащихся в столбце. Если в качестве параметра данной функции передать звездочку («*»), то функция подсчитает количество строк в таблице результата запроса. Ниже приведен пример запроса с несколькими агрегатными функциями:

 

ВЫБРАТЬ
СУММА(Оклад) КАК ФондОплатыТруда,
МИНИМУМ(Оклад) КАК МинОклад,
МАКСИМУМ(Оклад) КАК МаксОклад,
СРЕДНЕЕ(Оклад) КАК СреднийОклад,
КОЛИЧЕСТВО)*) КАК Количество
ИЗ Справочник.Сотрудники
 

Результат запроса будет содержать всего одну строку:

Рассмотрим более подробно функцию КОЛИЧЕСТВО / COUNT.

Эта функция подсчитывает количество значений параметра, попавших в выборку. В отличие от других агрегатных функций она допускает три варианта использования:

• Позволяет узнать количество строк в результате запроса. Для этого в качестве параметра функции надо указать звездочку («*»). Это наиболее часто встречающийся вариант использования функции КОЛИЧЕСТВО. Даже если в строке все поля содержат NULL, то такая строка тоже будет посчитана.

• Позволяет подсчитать количество значений указанного поля, не являющихся NULL-значениями. В качестве параметра функции можно указывать ссылки на поля, содержащие значения любого типа, при этом NULL-значения игнорируются.

• Позволяет узнать количество различных значений указанного поля. Для этого перед спецификацией поля надо указать ключевое слово РАЗЛИЧНЫЕ / DISTINCT, при этом NULL-значения игнорируются. Например, с помощью функции КОЛИЧЕСТВО можно ответить на следующие вопросы:

• Сколько сотрудников, у которых оклад больше заданной величины?

 

ВЫБРАТЬ КОЛИЧЕСТВО)*) КАК Количество
ИЗ Справочник.Сотрудники
ГДЕ Оклад > &ВыбОклад
 

• Сколько различных клиентов купили хоть что-нибудь за заданный период?

 

ВЫБРАТЬ КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Контрагент) КАК Количество
ИЗ Документ.РасходнаяНакладная
ГДЕ Дата МЕЖДУ НачДата И &КонДата
 
туры китай, франция и австрия, германия, швейцария, израиль и вьетнам . озеленение и ландшафтный дизайн