«C» или «R.C» ссылаются на столбец C данной строки T. 5.8 ()
Специфицирует значение, получаемое применением функции к аргументу.
::= COUNT(*) | | ::= { AVG | MAX | MIN | SUM | COUNT } (DISTNICT ) ::= { AVG | MAX | MIN | SUM } ([ALL] )
Аргумент COUNT(*) и источник аргумента () и () — это таблица или группа сгруппированной таблицы в соответствии со спецификациями в 5.19, » (
)», 5.24, » ()» и 5.25, » ()». Пусть R обозначает аргумент или источник аргумента (). () () и каждая () в () () должны недвусмысленно ссылаться на столбец R и не должны ссылаться на столбец, порожденный из (). () должно включать (), которая ссылается на столбец R, и не должно включать (). Если () является внешней ссылкой, то () не должно включать никаких операторов.
Замечание: «Внешняя ссылка» определяется в 5.7, » (). Если () содержит (), являющуюся внешней ссылкой, то () должна содержаться в () ().
Замечание: «Внешняя ссылка» определяется в 5.7, » (). Пусть T тип данных значений, являющихся результатами вычисления () или (). Если указывается COUNT, то тип данных результата () — это тип точных чисел с определенной в реализации точностью и масштабом 0. Если указывается MAX или MIN, то тип данных результата есть T. Если указывается SUM или AVG, то:
a) тип T не должен быть типом символьных строк.
b) если указывается SUM и T — тип точных чисел с масштабом S, то тип данных результата — тип точных чисел с определенной в реализации точностью и масштабом S.
c) если указывается AVG и T — тип точных чисел с масштабом S, то тип данных результата — тип точных чисел с определенными в реализации точностью и масштабом.
d) если T — тип приблизительных чисел, то тип результата — тип приблизительных чисел с определенной в реализации точностью.
Общие правила
Аргументом () является множество значений. Это множество получается путем удаления неопределенных значений и всех избыточных дублирующих значений из столбца R, на который ссылается (). Аргументом () является мультимножество значений. Это мультимножество получается путем удаления всех неопределенных значений из результата применения () к каждой строке R. Указание или неуказание ALL не влияет на смысл (). Пусть S обозначает аргумент () или (). Тогда:
a) Если задается () COUNT, то результатом является мощность S.
b) Если задается функция COUNT(*), то результатом является мощность R.
c) Если задается функция AVG, MAX, MIN или SUM и S пусто, то результатом является неопределенное значение.
d) Если задается MAX или MIN, то результатом является, соответственно, максимальное или минимальное значение в S. Эти результаты определяются с использованием правил сравнения, определенных в 5.11, «».
e) Если задается SUM, то результатом является суммазначений в S. Сумма должна быть в пределах диапазона значений типа данных результата.
f) Если задается AVG, то результатом является среднеезначение значений в S. Сумма значений в S должнабыть в пределах диапазона значений типа данных результата. 5.9 ()
Функция
Специфицирует значение.
Формат
::= | + | — ::= | * | / ::= [+|-] ::= | | | ( )
Синтаксические правила
(), включающее , не должно включать никаких двухместных операторов. Первый () (), следующей за одноместным оператором, не должен быть знаком плюс или минус. Если тип данных () является типом символьных строк, то () не должно включать никаких операторов. Типом данных результата является тип символьных строк. Если тип данных обоих операндов оператора является типом точных чисел, то тип данных результата является типом точных чисел с точностью и масштабом, определяемыми следующим образом:
a) Пусть s1 и s2 — масштабы первого и второго операндов, соответственно.
b) Точность результата сложения и вычитания определяется в реализации, и масштаб есть max(s1,s2).
c) Точность результата умножения определяется в реализации, и масштаб есть s1+s2.
d) Точность и масштаб результата деления определяются в реализации. Если тип данных какого-либо операнда оператора является типом приблизительных чисел, то тип данных результата есть тип приблизительных чисел. Точность результата определяется в реализации.
Общие правила
Если значение () является неопределенным значением, то результатом () является неопределенное значение. Если операторы не указаны, то результатом () является значение указанного (). Когда () применяется к строке таблицы, каждая ссылка на столбец этой таблицы является ссылкой на значение этого столбца в этой строке. Одноместные арифметические операторы + и — специфицируют одноместный плюс и одноместный минус, соответственно. Одноместный плюс не изменяет своего операнда. Одноместный минус изменяет знак своего операнда. Двухместные арифметические операторы +, -, * и / специфицируют сложение, вычитание, умножение и деление соответственно. Делитель не должен быть равен 0. Если типом результата арифметического оператора является тип целых чисел, то:
a) Если оператор не оператор деления, то математический результат операции должен быть точно представим с точностью и масштабом типа результата.
b) Если оператор — это оператор деления, то приближенный математический результат операции, представленный с точностью и масштабом типа результата не должен терять никаких лидирующих значащих цифр. Первыми вычисляются выражения в скобках. Когда порядок вычисления не определяется скобками, одноместные операторы применяются перед операторами умножения и деления, операторы умножения и деления применяются перед операторами сложения и вычитания, и операторы одного уровня предшествования применяются слева направо. 5.10 ()
Функция
Специфицирует условие, для которого может быть вычислено истиностное значение «true», «false» или «unknown».
Формат
::= | | | | | |
Синтаксические правила
Нет.
Общие правила
Результат () получается его применением к данной строке таблицы. 5.11 ()
Функция
Специфицирует сравнение двух значений.
Формат
::= { | } ::= = | | < | > | =
Синтаксические правила
Тип данных первого () и () или второго () должны быть сравнимыми.
Общие правила
Пусть x обозначает результат первого () и пусть y обозначает результат () или второго (). Мощность результата () не должна быть больше единицы. Если x или y являются неопределенными значениями или если результат () пустой, то результатом «x y» является unknown. Если x и y являются не неопределенными значениями, то результатом «x y» является true или false: «x = y» есть true тогда и только тогда, когда x и y равны. «x y» есть true тогда и только тогда, когда x и y не равны. «x < y» есть true тогда и только тогда, когда x меньше, чем y. «x > y» есть true тогда и только тогда, когда x больше, чем y. «x = y» есть true тогда и только тогда, когда x не меньше, чем y. Числа сравниваются в соответствии с их алгебраическими значениями. Сравнение двух символьных строк определяется через сравнение () с одинаковыми порядковыми позициями. Если строки не имеют одинаковую длину, то сравнение производится с рабочей копией более короткой строки, дополненной справа пробелами таким образом, чтобы она имела длину, равную длине другой строки. Две строки равны, если все () с одинаковыми порядковыми позициями совпадают. Если две строки не равны, то их отношение определяется на основе сравнения первой пары неравных () с левого конца строк. Это сравнение производится в соответствии с определенной в реализации последовательностью сопоставления. Хотя «x = y» есть unknown, если x и y являются неопределенными значениями, в контекстах GROUP BY, ORDER BY и DISTINCT неопределенное значение идентично или является дубликатом другого неопределенного значения. ()
Функция
Специфицирует сравнение с интервалом.
Формат
::= [NOT] BETWEEN AND
Синтаксические правила
Типы данных всех трех () должны быть сравнимыми.
Общие правила
Пусть x, y и z обозначают результаты первого, второго и третьего (), соответственно. Результат «x BETWEEN y AND z» тот же самый, что и результат «x >= y AND x