Перейти к содержимому

Какой оператор возвращает максимальное значение поля

  • автор:

MAX ФУНКЦИЯ

Oracle/PLSQL функция MAX возвращает максимальное значение выражения.

Синтаксис

Синтаксис Oracle/PLSQL функции MAX:

SELECT MAX(aggregate_expression)
FROM tables
[WHERE conditions];

ИЛИ синтаксис для функции MAX с группировкой результатов по одному или нескольким столбцам:

SELECT expression1, expression2, . expression_n,
MAX(aggregate_expression)
FROM tables
[WHERE conditions]
GROUP BY expression1, expression2, . expression_n;

Параметры или аргументы

expression1 , expression2 , . expression_n — выражения, которые не инкапсулированы в функцию MAX и должны быть включены в оператор GROUP BY в конце SQL преложения.

aggregate_expression — это столбец или выражение, из которого будет возвращено максимальное значение.

tables — таблицы, из которых вы хотите получить записи. В операторе FROM должна быть указана хотя бы одна таблица.

WHERE conditions — необязательный. Это условия, которые должны быть соблюдены для выбранных записей.

Применение

Функцию MAX можно использовать в следующих версиях Oracle/PLSQL:

  • Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i, Oracle 8i

Пример с единичным полем

Рассмотрим несколько примеров функции MAX и изучим, как использовать функцию MAX в Oracle/PLSQL.
Например, вы, возможно, пожелает узнать, какая максимальная зарплата всех employees (сотрудников).

Логические функции — GREATEST (Transact-SQL)

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

Синтаксис

GREATEST ( expression1 [ , . expressionN ] ) 

Аргументы

expression1, expressionN

Список выражений любого сопоставимого типа данных, разделенный запятыми. Функция GREATEST требует по меньшей мере один аргумент, но не более 254 аргументов.

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

Типы возвращаемых данных

Возвращает тип данных с наивысшим приоритетом из переданного функции набора типов. Дополнительные сведения см. в разделе Приоритет типов данных (Transact-SQL).

Если все аргументы имеют одинаковый тип данных и тип поддерживается для сравнения, GREATEST возвращает этот тип.

В противном случае функция перед сравнением неявно приводит все аргументы к типу данных с наивысшим приоритетом и использует его как тип возвращаемого значения.

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

Замечания

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

Перед сравнением выполняется неявное приведение всех аргументов к типу данных с наивысшим приоритетом.

Если неявное преобразование типов между аргументами не поддерживается, функция завершится ошибкой и возвращает ошибку.

Дополнительные сведения о явном и неявном преобразовании см. в статье Преобразование типов данных (ядро СУБД).

Если один или несколько аргументов не NULL являются, NULL то аргументы игнорируются во время сравнения. Если все аргументы являются NULL , возвращается NULL GREATEST .

Сравнение символьных аргументов осуществляется в соответствии с правилами, приведенными в статье Очередность параметров сортировки.

Для сравнения не поддерживаются следующие типы: varchar(max), varbinary(max) или nvarchar(max) превышающие 8000 байт, курсор, геометрия , география, география, изображение, неупорядоченные пользователем типы, ntext, table, text и xml. GREATEST

Типы данных varchar(max), varbinary(max)и nvarchar(max) поддерживаются для аргументов, 8000 байт или меньше, и будут неявно преобразованы в varchar(n), varbinary(n)и nvarchar(n), соответственно, перед сравнением.

Например, varchar(max) может поддерживать до 8000 символов, если используется набор символов с одним байтом, а nvarchar(max) может поддерживать до 4000 байт-пар (при условии кодировки символов UTF-16).

Примеры

А. Возвращает максимальное значение из списка констант

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

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

SELECT GREATEST('6.62', 3.1415, N'7') AS GreatestVal; GO 
GreatestVal -------- 7.0000 (1 rows affected) 

B. Возвращает максимальное значение из списка констант символов

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

SELECT GREATEST('Glacier', N'Joshua Tree', 'Mount Rainier') AS GreatestString; GO 
GreatestString ------------- Mount Rainier (1 rows affected) 

C. Возвращает максимальное значение из списка аргументов столбцов

Этот пример возвращает максимальное значение из списка аргументов столбца и при сравнении игнорирует значения NULL . В этом примере используется база данных AdventureWorksLT , которую можно быстро установить в качестве образца базы данных для нового экземпляра Базы данных SQL Azure. Дополнительные сведения см. в разделе Образцы баз данных AdventureWorks.

SELECT P.Name, P.SellStartDate, P.DiscontinuedDate, PM.ModifiedDate AS ModelModifiedDate, GREATEST(P.SellStartDate, P.DiscontinuedDate, PM.ModifiedDate) AS LatestDate FROM SalesLT.Product AS P INNER JOIN SalesLT.ProductModel AS PM ON P.ProductModelID = PM.ProductModelID WHERE GREATEST(P.SellStartDate, P.DiscontinuedDate, PM.ModifiedDate) >= '2007-01-01' AND P.SellStartDate >= '2007-01-01' AND P.Name LIKE 'Touring %' ORDER BY P.Name; 

Результирующий набор: LatestDate выбирает наибольшее значение даты из трех значений, не учитывая значения NULL .

Name SellStartDate DiscontinuedDate ModelModifiedDate LatestDate -------------------- ----------------------- ------------------- ----------------------- ----------------------- Touring Pedal 2007-07-01 00:00:00.000 NULL 2009-05-16 16:34:29.027 2009-05-16 16:34:29.027 Touring Tire 2007-07-01 00:00:00.000 NULL 2007-06-01 00:00:00.000 2007-07-01 00:00:00.000 Touring Tire Tube 2007-07-01 00:00:00.000 NULL 2007-06-01 00:00:00.000 2007-07-01 00:00:00.000 (3 rows affected) 

D. Использование GREATEST с локальными переменными

В этом примере с помощью GREATEST определяется максимальное значение из списка локальных переменных в предикате предложения WHERE .

CREATE TABLE dbo.Studies ( VarX VARCHAR(10) NOT NULL, Correlation DECIMAL(4, 3) NULL ); INSERT INTO dbo.Studies VALUES ('Var1', 0.2), ('Var2', 0.825), ('Var3', 0.61); GO DECLARE @PredictionA DECIMAL(2, 1) = 0.7; DECLARE @PredictionB DECIMAL(3, 1) = 0.65; SELECT VarX, Correlation FROM dbo.Studies WHERE Correlation > GREATEST(@PredictionA, @PredictionB); GO 

Результирующий набор: Отображаются только значения, превышающие 0,7.

VarX Correlation ---------- ----------- Var2 .825 (1 rows affected) 

Д. Использование GREATEST с столбцами, константами и переменными

В этом примере с помощью GREATEST определяется максимальное значение из смешанного списка, содержащего столбцы, константы и переменные.

CREATE TABLE dbo.Studies ( VarX VARCHAR(10) NOT NULL, Correlation DECIMAL(4, 3) NULL ); INSERT INTO dbo.Studies VALUES ('Var1', 0.2), ('Var2', 0.825), ('Var3', 0.61); GO DECLARE @VarX DECIMAL(4, 3) = 0.59; SELECT VarX, Correlation, GREATEST(Correlation, 0, @VarX) AS GreatestVar FROM dbo.Studies; GO 
VarX Correlation GreatestVar ---------- --------------------- --------------------- Var1 0.200 0.590 Var2 0.825 0.825 Var3 0.610 0.610 (3 rows affected) 

Следующие шаги

  • LEAST (Transact-SQL)
  • MAX (Transact-SQL)
  • MIN (Transact-SQL)
  • CASE (Transact-SQL)
  • CHOOSE (Transact-SQL)

RangeMax — скрипт и функция диаграммы

RangeMax() возвращает самое высокое числовое значение, обнаруженное в выражении или поле.

RangeMax( first_expr[, Expression] )

Возвращаемые типы данных: числовое значение

  • first_expr : Выражение или поле, содержащее данные для измерения.
  • Expression : Дополнительные выражения или поля, содержащие диапазон значений для измерения. Можно использовать несколько дополнительных выражений.

Если числовые значения не найдены, возвращается значение NULL .

Пример: (использование выражения)

Возвращает максимальное значение в диапазоне из трех значений поля MyField , вычисленных в текущей строке и двух строках над ней. При указании третьего аргумента как 3 функция Above() возвращает три значения, над которыми достаточно строк, и которые принимаются за вводимые значения в функцию RangeMax() .

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

Пример вывода выражения

MyField RangeMax (Above(Sum(MyField),1,3))
10 10
2 10
8 10
18 18
5 18
9 18

Данные, используемые в примерах:

Пример: (в виде таблицы)

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

LOAD recno() as RangeID, RangeMax(Field1,Field2,Field3) as MyRangeMax INLINE [

Field1, Field2, Field3

Результирующая таблица показывает возвращенные значения функции MyRangeMax для каждой записи в таблице.

Пример вывода в виде таблицы

RangeID MyRangeMax
1 10
2 7
3 8
4 18
5 9
6 9

Функции Min, Max

Возвращают наибольшее и наименьшее значения поля, заданного в запросе.

Синтаксис

Min( выражение )

Max( выражение )

Аргумент выражение представляет собой строковое выражение, определяющее поле с данными, для которых требуется выполнить расчет, или выражение, с помощью которого этот расчет производится. Операндом в выражении может быть имя таблицы, константа или функция (встроенная или определяемая пользователем, но не другая агрегатная функция SQL).

Примечания

При помощи функций Min и Max можно определить наименьшее и наибольшее значение поля на основе заданных условий агрегирования или группировки. Например, эти функции можно использовать для возвращения максимальной и минимальной стоимости доставки. Если агрегирование не задано, используется вся таблица.

Функции Min и Max можно применять в выражении запроса, в качестве свойства SQL объекта QueryDef, а также при создании набора записей на основе запроса SQL.

Примеры запросов

SELECT Min(Unitprice) as Expr1 from ProductSales;

Возвращает минимальную цену за единицу из поля «Цена» и отображает ее в столбце «Expr1».

SELECT Max(Unitprice) as Expr1 from ProductSales;

Возвращает максимальную цену за единицу из поля «Цена» и отображает в столбце xpr1.

SELECT Max(Unitprice) as MaxPrice from ProductSales;

Возвращает максимальную цену за единицу из поля «Цена» и отображает в столбце «МаксимумЦена».

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

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