Sql: max function

Понимание спецификации пакета.

Спецификация пакета содержит публичные объявления элементов. Область этих объявлений является локальной для вашей схемы базы данных и глобальной для пакета. Итак, объявленные элементы доступны из вашего приложения и из любой точки пакета.

В спецификации перечислены элементы пакета, доступные приложениям. Вся информация, необходимая вашему приложению для использования элементов, содержится в спецификации. Например, следующее объявление показывает, что функция с именем fac принимает один аргумент типа INTEGER и возвращает значение типа INTEGER:

Oracle PL/SQL

FUNCTION fac (n INTEGER) RETURN INTEGER; — returns n!

1 FUNCTIONfac(nINTEGER)RETURNINTEGER;— returns n!

Это вся информация, необходимая для вызова функции. Вам не нужно рассматривать его базовую реализацию (например, итеративную или рекурсивную).

Только подпрограммы и курсоры имеют базовую реализацию. Таким образом, если спецификация объявляет только типы, константы, переменные, исключения и спецификации вызовов, то тело пакета не требуется. Рассмотрим следующий пакет без тела:

Oracle PL/SQL

CREATE PACKAGE trans_data AS — bodiless package
TYPE TimeRec IS RECORD (
minutes SMALLINT,
hours SMALLINT);
TYPE TransRec IS RECORD (
category VARCHAR2,
account INT,
amount REAL,
time_of TimeRec);
minimum_balance CONSTANT REAL := 10.00;
number_processed INT;
insufficient_funds EXCEPTION;
END trans_data;

1
2
3
4
5
6
7
8
9
10
11
12
13

CREATEPACKAGEtrans_dataAS— bodiless package

TYPETimeRecISRECORD(

minutesSMALLINT,

hoursSMALLINT);

TYPETransRecISRECORD(

categoryVARCHAR2,

accountINT,

amountREAL,

time_ofTimeRec);

minimum_balanceCONSTANTREAL:=10.00;

number_processedINT;

insufficient_fundsEXCEPTION;

ENDtrans_data;

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

Ссылка на содержание пакета

Чтобы ссылаться на типы, элементы, подпрограммы и спецификации вызовов, объявленные в спецификации пакета, используйте точечную нотацию следующим образом:

package_name.type_name

package_name.item_name

package_name.subprogram_name

package_name.call_spec_name

Вы можете ссылаться на содержимое пакета с помощью триггеров базы данных, хранимых подпрограмм, прикладных программ 3GL и различных инструментов Oracle. Например, вы можете вызвать процедуру пакета hire_employee из PL/SQL Developer следующим образом:

Oracle PL/SQL

BEGIN
emp_actions.hire_employee(‘VLADIMIR’, ‘MEDIC’, …);
END;

1
2
3

BEGIN

emp_actions.hire_employee(‘VLADIMIR’,’MEDIC’,…);

END;

Ограничения

Вы не можете ссылаться на удаленные переменные пакета прямо или косвенно. Например, вы не можете вызвать следующую процедуру удаленно, потому что она ссылается на переменную пакета, когда параметр инициализируется:

Oracle PL/SQL

CREATE PACKAGE random AS
seed
NUMBER;
PROCEDURE initialize (starter IN NUMBER := seed, …);

1
2
3

CREATEPACKAGErandomAS

seedNUMBER;

PROCEDUREinitialize(starterINNUMBER:=seed,…);

Кроме того, внутри пакета вы не можете ссылаться на переменные хоста.

АргументыArguments

ALLALLПрименяет агрегатную функцию ко всем значениям.Applies the aggregate function to all values. ALL является параметром по умолчанию.ALL is the default.

DISTINCTDISTINCTУказывает, что учитывается каждое уникальное значение.Specifies that each unique value is considered. Параметр DISTINCT не имеет смысла при использовании функцией MAX и доступен только для совместимости со стандартом ISO.DISTINCT is not meaningful with MAX and is available for ISO compatibility only.

expressionexpressionМожет быть константой, именем столбца или функцией, а также любым сочетанием арифметических, побитовых и строковых операторов.Is a constant, column name, or function, and any combination of arithmetic, bitwise, and string operators. MAX можно использовать со столбцами numeric, character, uniqueidentifier и datetime, но не со столбцами bit.MAX can be used with numeric, character, uniqueidentifier, and datetime columns, but not with bit columns. Агрегатные функции и вложенные запросы не допускаются.Aggregate functions and subqueries are not permitted.

Дополнительные сведения см. в разделе Выражения (Transact-SQL).For more information, see Expressions (Transact-SQL).

OVER ( order_by_clause )OVER ( order_by_clause)partition_by_clause делит результирующий набор, полученный с помощью предложения FROM, на секции, к которым применяется функция.partition_by_clause divides the result set produced by the FROM clause into partitions to which the function is applied. Если этот параметр не указан, функция обрабатывает все строки результирующего набора запроса как отдельные группы.If not specified, the function treats all rows of the query result set as a single group. order_by_clause определяет логический порядок, в котором выполняется операция.order_by_clause determines the logical order in which the operation is performed. Аргумент order_by_clause является обязательным.order_by_clause is required. Дополнительные сведения см. в статье Предложение OVER (Transact-SQL).For more information, see OVER Clause (Transact-SQL).

КомментарииRemarks

При выполнении функции MAX все значения NULL пропускаются.MAX ignores any null values.

MAX возвращает NULL, если нет строк для выбора.MAX returns NULL when there is no row to select.

При использовании со столбцами, содержащими символьные значения, функция MAX находит наибольшее значение в упорядоченной последовательности.For character columns, MAX finds the highest value in the collating sequence.

MAX — это детерминированная функция, если она используется без предложений OVER и ORDER BY.MAX is a deterministic function when used without the OVER and ORDER BY clauses. Она не детерминирована при использовании с предложениями OVER и ORDER BY.It is nondeterministic when specified with the OVER and ORDER BY clauses. Дополнительные сведения см. в разделе Deterministic and Nondeterministic Functions.For more information, see Deterministic and Nondeterministic Functions.

SQL Учебник

SQL ГлавнаяSQL ВведениеSQL СинтаксисSQL SELECTSQL SELECT DISTINCTSQL WHERESQL AND, OR, NOTSQL ORDER BYSQL INSERT INTOSQL Значение NullSQL Инструкция UPDATESQL Инструкция DELETESQL SELECT TOPSQL MIN() и MAX()SQL COUNT(), AVG() и …SQL Оператор LIKESQL ПодстановочныйSQL Оператор INSQL Оператор BETWEENSQL ПсевдонимыSQL JOINSQL JOIN ВнутриSQL JOIN СлеваSQL JOIN СправаSQL JOIN ПолноеSQL JOIN СамSQL Оператор UNIONSQL GROUP BYSQL HAVINGSQL Оператор ExistsSQL Операторы Any, AllSQL SELECT INTOSQL INSERT INTO SELECTSQL Инструкция CASESQL Функции NULLSQL ХранимаяSQL Комментарии

КомментарииRemarks

Значения NULL функцией MIN не учитываются.MIN ignores any null values.

Для столбцов символьных данных функция MIN находит значение, находящееся внизу последовательности сортировки.With character data columns, MIN finds the value that is lowest in the sort sequence.

MIN — это детерминированная функция, если она используется без предложений OVER и ORDER BY.MIN is a deterministic function when used without the OVER and ORDER BY clauses. Она не детерминирована при использовании с предложениями OVER и ORDER BY.It is nondeterministic when specified with the OVER and ORDER BY clauses. Дополнительные сведения см. в разделе Deterministic and Nondeterministic Functions.For more information, see Deterministic and Nondeterministic Functions.

ПримерыExamples

A.A. Простой примерSimple example

В следующем примере возвращается наиболее низкая (минимальная) налоговая ставка.The following example returns the lowest (minimum) tax rate. В этом примере используется база данных AdventureWorks2012AdventureWorks2012The example uses the AdventureWorks2012AdventureWorks2012 database

Результирующий набор:Here is the result set.

Б.B. Использование предложения OVERUsing the OVER clause

В следующем примере рассматривается применение функций MIN, MAX, AVG и COUNT с предложением OVER для получения статистических значений для каждого из отделов в таблице в базе данных AdventureWorks2012AdventureWorks2012.The following example uses the MIN, MAX, AVG and COUNT functions with the OVER clause to provide aggregated values for each department in the table in the AdventureWorks2012AdventureWorks2012 database.

Результирующий набор:Here is the result set.

АргументыArguments

ALLALLПрименяет агрегатную функцию ко всем значениям.Applies the aggregate function to all values. ALL является параметром по умолчанию.ALL is the default.

DISTINCTDISTINCTУказывает, что учитывается каждое уникальное значение.Specifies that each unique value is considered. Параметр DISTINCT не имеет смысла при использовании функцией MIN и доступен только для совместимости со стандартом ISO.DISTINCT is not meaningful with MIN and is available for ISO compatibility only.

expressionexpressionМожет быть константой, именем столбца или функцией, а также любым сочетанием арифметических, побитовых и строковых операторов.Is a constant, column name, or function, and any combination of arithmetic, bitwise, and string operators. MIN можно использовать со столбцами numeric, char, varchar, uniqueidentifier или datetime, но не со столбцами bit.MIN can be used with numeric, char, varchar, uniqueidentifier, or datetime columns, but not with bit columns. Агрегатные функции и вложенные запросы не допускаются.Aggregate functions and subqueries are not permitted.

Дополнительные сведения см. в разделе Выражения (Transact-SQL).For more information, see Expressions (Transact-SQL).

OVER ( order_by_clause )OVER ( order_by_clause)partition_by_clause делит результирующий набор, полученный с помощью предложения FROM, на секции, к которым применяется функция.partition_by_clause divides the result set produced by the FROM clause into partitions to which the function is applied. Если этот параметр не указан, функция обрабатывает все строки результирующего набора запроса как отдельные группы.If not specified, the function treats all rows of the query result set as a single group. order_by_clause определяет логический порядок, в котором выполняется операция.order_by_clause determines the logical order in which the operation is performed. Аргумент order_by_clause является обязательным.order_by_clause is required. Дополнительные сведения см. в статье Предложение OVER (Transact-SQL).For more information, see OVER Clause (Transact-SQL).

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector