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

3.2.7. Вычисления в таблицах

Вычисления производятся командами AVERAGE, CALCULATE, COUNT и SUM. Для всех перечисленных команд справедливо следующее:

  1. Результаты отображаются на экране, если SET TALK установлен в ON. Если SET HEADINGS установлен в ON, то выводятся и вычисляемые выражения, размещаемые над результатами.

  2. Записи, имеющие пометку удаления, обрабатываются, если SET DELETED установлен в OFF, и не обрабатываются – в противном случае.

Команды приводятся в алфавитном порядке. Их опции и параметры описаны в табл. 1.7 и 3.13.

Таблица 3.13

Опции и параметры команд, выполняющих вычисления в таблицах

Опция / параметр

Описание

eExpressionList

Список числовых выражений, включающих поля таблицы. Элементы списка разделяются запятыми. В случае команды CALCULATE выражения могут содержать любую комбинацию приводимых в табл. 3.14 функций

TO VarList

Список переменных, в которых сохраняется результат. Если переменная не существует, то она будет создана. Элементами списка могут быть и элементы существующего массива

TO ARRAY ArrayName

Одномерный массив, в который заносятся результаты. Если массив не существует то он будет создан. Если размер существующего массива недостаточен для хранения результатов, то он будет увеличен, если избыточен, то останется без изменения

Команда

AVERAGE [eExpressionList] [Scope] [FOR lExpression1] [WHILE lExpression2] [TO VarList | TO ARRAY ArrayName] [NOOPTIMIZE]

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

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

Замечание. Результаты команд AVERAGE и CALCULATE AVG( ) совпадают.

Пример 1. Вычисляется средняя цена книг (поле Price), сведения о которых хранит таблица Books. Вдобавок для демонстрационных целей вычисляется квадрат среднего значения кода книг (поле BookId).

set talk on

set headings on

&& Проверяем, открыта ли таблица Books

if not Used("Books") then

MessageBox("Нужно открыть таблицу Books!")

return

endif

select Books

average Price, BookId**2 to avgPrice, avgBookId

Результат, отображаемый на экране:

Price

BookId**2

194.58

54.17

Пример 2. Вычисляется средняя цена книг, код которых больше среднего значения кода.

&& Находим среднее значение кода книг

average BookId to avgBookId

average Price for BookId > avgBookId to avgPrice

Пример 3. Вычисляется средняя цена книг (поле Price таблицы Books ) авторов, введенных в базу после 1 января 2004 г (поле InputDate таблицы Authors).

close databases

open database D:\HomeLibrary\HomeLibrary.dbc

store {^2004–01–01} to someDate

&&

&& Выбираем необходимые для вычислений данные в таблицу BookPrice

&& Для этой цели нужно привлечь 3 таблицы: Authors, Books и BooksAuthors

select Price;

from Books, Authors, BooksAuthors;

where Books.BookId = BooksAuthors.BookId;

and Authors.AuthorId = BooksAuthors.AuthorId;

and Authors.InputDate > someDate;

into cursor BookPrice

&& После выполнения SELECT выбрана область, в которой открыт курсор BookPrice

&&

&& Получаем и печатаем результат

average Price to avgPrice

? avgPrice

Команда

CALCULATE eExpressionList [Scope] [FOR lExpression1] [WHILE lExpression2] [TO VarList | TO ARRAY ArrayName] [NOOPTIMIZE] [IN nWorkArea | cTableAlias]

выполняет финансовые и статистические операции с полями таблиц или с выражениями, включающими поля, используя в качестве элементов eExpressionList приведенные в табл. 3.14 функции.

Таблица 3.14

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