Базы данных Oracle - статьи

         

Команда COMPUTE


Команда COMPUTE позволяет вычислять и выдавать итоговые значения. При вызове без параметров выдает все заданные вычисления. Команда COMPUTE имеет следующий синтаксис:

<команда COMPUTE> ::=

COMP[UTE]{ <функция> [LAB[EL] <текст>]}

OF <ссылка на столбец>{ <ссылка на столбец>}

   ON <ссылка на место>{ <ссылка на место>}

<ссылка на место> ::=

<ссылка на столбец> | REPORT | ROW

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

Таблица 8. Функции в команде COMPUTE.



Функция Назначение Допустимые типы данных
AVG Среднее среди непустых значенийЧисловые
COU[NT] Количество непустых значенийВсе
MIN[IMUM] Минимальное значениеЧисловые и строковые
MAX[IMUM] Максимальное значениеЧисловые и строковые
NUM[BER] Количество строкВсе
SUM Сумма непустых значенийЧисловые
STD Среднеквадратичное отклонение непустых значенийЧисловые
VAR[IANCE] Дисперсия непустых значенийЧисловые

Назначение основных конструкций команды COMPUTE описано в .

Таблица 9. Основные конструкции команды COMPUTE.

Конструкция Описание
LABEL <текст>Задает метку вычисляемого значения. Если эта конструкция не указана, выдается полное имя функции (см. ). Максимальная длина текста - 500 символов. Если текст содержит пробелы и символы пунктуации, его надо брать в одиночные кавычки. Метка выравнивается влево и усекается до меньшего из значений ширины столбца или длины строки.

Метка для вычисляемого значения выдается в столбце, по которому выполняется BREAK. Чтобы метка не выдавалась, необходимо задать опцию NOPRINT в команде COLUMN для этого столбца.

Если вычисления выполняются по ON ROW или ON REPORT, вычисляемое значение выдается в первом столбце и метка не выдается. Чтобы метка была выдана, включите в список выбора первым фиктивный столбец.

OF <ссылка на столбец>Задает столбцы или выражения, функция от которого вычисляется. В конструкции OF можно сослаться на выражение в списке выбора, взяв его в двойные кавычки. Имя или псевдоним столбца в кавычки брать не надо.
ON <ссылка на место>Задает событие, которое утилита SQL*Plus будет считать местом для вычисления. При ссылке на столбец его имя нельзя уточнять, - при необходимости надо использовать псевдонимы. При достижении места вычисления (т.е. когда изменяется значение столбца или выражения, извлекается новая строка или достигается конец отчета) команда COMPUTE выдает вычисленное значение и начинает вычисление сначала.

Если для одного и того же столбца задано несколько команд COMPUTE, применяется последняя из них.

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

Если в качестве события задано ON ROW или ON REPORT, необходимо, чтобы в последней команде BREAK также использовался критерий разрыва ROW или REPORT.

<
Для удаления всех определений COMPUTE используется команда CLEAR COMPUTES.

Рассмотрим простой пример вычисления итоговых значений и редактирования SQL-операторов в SQL*Plus:

SQL> set pagesize 55

SQL> break on deptno skip 1

SQL> compute avg label 'Средняя' of sal on deptno

SQL> select deptno, ename, sal

2 from emp

3 order by deptno;

DEPTNO ENAME SAL ---------- ---------- ---------- 10 CLARK 2450 KING 5000 MILLER 1300 ********** ---------- Средняя 2916,66667

20 SMITH 800 ADAMS 1100 FORD 3000 SCOTT 3000 JONES 2975 ********** ---------- Средняя 2175

30 ALLEN 1600 BLAKE 2850 MARTIN 1250 JAMES 950 TURNER 1500 WARD 1250 ********** ---------- Средняя 1566,66667

14 строк выбрано.

SQL> compute sum of sal on report

SQL> /

... тот же результат, поскольку не изменили условие BREAK

SQL> break on deptno skip 1 on report

SQL> list 2

2* from emp SQL> list *

2* from emp SQL> i where deptno in (10, 20)

SQL> /

DEPTNO ENAME SAL ---------- ---------- ---------- 10 CLARK 2450 KING 5000 MILLER 1300 ********** ---------- Средняя 2916,66667

20 SMITH 800 ADAMS 1100 FORD 3000 SCOTT 3000 JONES 2975 ********** ---------- Средняя 2175

---------- sum 19625

8 строк выбрано.


Содержание раздела