Суммирует все или определенные числовые поля в текущей выбранной таблице.
SUM [eExpressionList] [Scope] [FOR lExpression1] [WHILE lExpression2] [TO MemVarNameList | TO ARRAY ArrayName] [NOOPTIMIZE] |
Параметры
- eExpressionList
-
Определяет одно или несколько полей или выражение для поля для суммирования. Если вы опускаете выражение для списка полей, все числовые поля будут суммированы.
- Score
-
Определяет диапазон записей, включаемых в сумму. Score может включать предложения: ALL, NEXT nRecords, RECORD nRecordNumber и REST. Более подробно о предложениях области видимости смотрите Scope Clauses.
По умолчанию используется предложение ALL, суммирующее все записи.
- FOR lExpression1
-
Определяет, что только те записи, для которых логическое выражение lExpression1 оценивается в "истину" (.T.), включаются в сумму. Включение FOR делает возможным включать в суммирование записи, отфильтрованные от ненужных записей.
Rushmore-оптимизация оптимизирует команду SUM ... FOR, если lExpression1 является оптимизируемым выражением. Для получения наилучших результатов используйте оптимизируемое выражение в предложении FOR.
Более подробно о Rushmore-оптимизации смотрите SET OPTIMIZE Command and Using Rushmore Query Optimization to Speed Data Access.
- WHILE lExpression2
-
Определяет условие, при котором записи текущей таблицы включаются в сумму до тех пор, пока логическое выражение lExpression2 оценивается в "истину" (.T.).
- TO MemVarNameList
-
Сохраняет каждую сумму в переменную. Если вы определили переменную в MemVarNameList, которая не существует, Visual FoxPro автоматически создает ее. Разделяйте имена переменных в списке запятой.
- TO ARRAY ArrayName
-
Сохраняет суммы в массиве переменных. Если массив, который определен в SUM, не существует, Visual FoxPro создает его автоматически. Если массив существует и слишком мал, чтобы содержать все суммы, размер массива увеличивается автоматически, чтобы разместить суммы.
- NOOPTIMIZE
-
Запрещает Rushmore-оптимизацию в SUM.
Более подробно смотрите SET OPTIMIZE Command и Using Rushmore Query Optimization to Speed Data Access.
Пример
Следующий пример показывает суммирование в in_stock
и on_order
полей в таблице products
вместе с суммированием двух итогов.
![]() | |
---|---|
CLOSE DATABASES OPEN DATABASE (HOME(2) + 'data\testdata') USE products && Opens Products table SUM in_stock, on_order, in_stock+on_order ; TO gnInStock, gnOnOrder, gnUnits CLEAR ? ? 'Total in stock : ', gnInStock && Displays 3119.00 ? 'Total on order: ', gnOnOrder && Displays 780.00 ? 'Total # units : ', gnUnits && Displays 3899.00 |