Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
VisualFoxPro.doc
Скачиваний:
15
Добавлен:
01.07.2025
Размер:
11 Мб
Скачать
☆

Функции, употребляемые в eExpressionList команды calculate

Функция

Описание

AVG(nExpression)

Вычисляет среднее арифметическое всех значений nExpression

CNT( )

Возвращает число записей, удовлетворяющих условиям, заданным Scope FOR и WHILE

MAX(eExpression)

Возвращает максимальное из всех значений eExpression. Тип eExpression может быть Character, Date, DateTime, Currency и любой числовой

MIN(eExpression)

Возвращает минимальное из всех значений eExpression. Тип eExpression может быть Character, Date, DateTime, Currency и любой числовой

NPV(nExpression1, nExpression2 [, nExpression3])

Вычисляет величину чистой приведенной стоимости инвестиции, используя ставку дисконтирования nExpression1, а также стоимости (nExpression2) будущих выплат (отрицательные значения) и поступлений (положительные значения). Ставка дисконтирования nExpression1 задается не в процентах, а в виде числа от 0 до 1. nExpression2 – задает поле или выражение с именем поля, или числовое выражение, значения которого интерпретируются как будущие выплаты или поступления. nExpression3 – необязательное начальное вложение капитала. Не включается, если предполагается произвести начальное вложение в конце первого периода; такое начальное вложение задается в первой записи поля причем в виде отрицательного числа

STD(nExpression)

Вычисляет стандартное (среднее квадратичное) отклонение величин, возвращаемых nExpression. Среднее квадратичное отклонение std величин x1, x2, …, xn от a вычисляется по формуле

SUM(nExpression)

Возвращает сумму всех значений выражения nExpression

VAR(nExpression)

Вычисляет дисперсию D величин, возвращаемых nExpression. Она равна квадрату стандартного отклонения:

Замечание. Помимо перечисленных в таблице функций, выражения eExpressionList могут содержать и иные функции. Однако функции таблицы не могут быть аргументами иных функций. Так, можно записать команду

calculate Avg(Sqrt(Price))

однако следующая команда недопустима

calculate Sqrt(Avg(Price))

В результатах, возвращаемых функциями, учитываются только записи, удовлетворяющие условиям, заданным Scope, FOR и WHILE. Поля, содержащие NULL, при вычислениях CALCULATE не учитываются.

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

set talk off

select Books

&& Записываем результаты в массив calcResults

calculate Avg(Price), Max(Price), Std(Price) , Cnt( ) to array calcResults

&& Печать результата

display memory like calcResults

Возможный результат:

calcResults

( 1) N 195.71 (195.71428571)

( 2) N 210.00 (210.00000000)

( 3) N 10.33 ( 10.32630878)

( 4) N 14 ( 14.00000000)

Команда

COUNT [Scope] [FOR lExpression1] [WHILE lExpression2] [TO VarName] [NOOPTIMIZE]

вычисляет число записей, удовлетворяющих заданным условиям.

Замечание. Такие же результаты при прочих равных условиях возвращает команда CALCULATE, употребленная с функцией CNT( ).

Команда

SUM eExpressionList [Scope] [FOR lExpression1] [WHILE lExpression2] [TO VarName | TO ARRAY ArrayName] [NOOPTIMIZE]

вычисляет суммы значений, возвращаемых выражениями, входящими в eExpressionList. Число сумм равно числу имеющихся в eExpressionList выражений.

В вычисления включаются все числовые поля таблицы, если параметр ExpressionList опущен.

Замечание. Такие же результаты при прочих равных условиях возвращает команда CALCULATE, употребленная с функцией SUM( ).

Команда

TOTAL TO TableName ON FieldName [FIELDS FieldNameList] [Scope] [FOR lExpression1] [WHILE lExpression2] [NOOPTIMIZE]

вычисляет суммы числовых полей (итоги) текущей таблицы по полю (выражению) FieldName, записывая результат в таблицу TableName.

Если таблица не существует, то она будет создана, если существует, то перезаписана. Диалог, предупреждающий о существовании таблицы и предоставляющий возможность отказаться от ее перезаписи, появляется, если SET SAFETY установлен в ON.

Опции и параметры (см. также табл. 1.7 и 3.13):

ON FieldName – задает поле или выражение с полями таблицы, по которому группируются итоги. Таблица должна либо быть отсортирована по этому выражению, либо активный индекс должен быть иметь его в качестве ключевого выражения.

FIELDS FieldNameList – список полей, по которым подводятся итоги. Имена полей в списке разделяются запятыми. Если опция опущена, то итоги подводятся по всем полям.

Число записей в результирующей таблице равно числу несовпадающих значений в поле FieldName (с учетом Scope- FOR- и WHILE-ограничений). Отдельные итоги вычисляются для группы записей с одинаковым значением поля FieldName.

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

  • отсекаются позиции с данными после десятичной точки, оставшаяся порция данных после десятичной точки (если отсечены не все позиции) округляется;

  • если итог по-прежнему не помещается в поле, то для его отображения используется научная нотация (экспоненциальная форма), при условии, что размер поля не менее 7;

  • если научная нотация не может быть применена, то выводятся звездочки.

Пример. Таблица Test.dbf содержит приведенные в табл. 3.15 данные.

Таблица 3.15

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]