Использование агрегатных функций |
Для автоматизации агрегирования данных можно использовать функции:
grSum( <вычисляемое выражение> ) - вычисляет сумму указанного параметра;
grAvg( <вычисляемое выражение> ) - вычисляет среднее значение указанного параметра;
grMax( <вычисляемое выражение> ) - вычисляет максимальное значение указанного параметра;
grMin( <вычисляемое выражение> ) - вычисляет минимальное значение указанного параметра;
grCount() - вычисляет количество итераций;
grFirst( <вычисляемое выражение> ) - возвращает первое значение указанного параметра;
grLast( <вычисляемое выражение> ) - возвращает последнее значение указанного параметра.
Использование агрегатных функций имеет смысл в контексте определенной группы. Посему, для явного обращения нужно использовать идентификатор группы в качестве префикса к имени функции. По умолчанию подставляется последняя закрытая группа. В качестве параметра можно использовать произвольное вычисляемое выражение. Тип результирующего выражения всегда приводится к максимальному, с сохранением сущности. Например, byte, word, integer, longInt всегда приводятся к comp, а single - к double.
_loop aTable { ... groupBy g1 : aTable f1 { // g2.grSum( f3 ); тут сумма не доступна groupBy g2 : aTable f2 { // здесь по умолчанию ничего не работает g2.grSum( f3 ); // так получим сумму с нарастающим итогом } sum( f3 ); // так мы обращаемся к сумме группы g2 g2.grSum( f3 ); // или так мы обращаемся к сумме группы g2 } g1.grSum( f3 ); // а можно и так, но в данном случае g1 было писать не обязательно ... }
Атлантис 5.03