MAX ФУНКЦИЯ

Узнайте, как использовать Oracle / PLSQL функцию MAX с синтаксисом и примерами.

Описание

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

Синтаксис

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

SELECT MAX( expression ) FROM tables WHERE conditions;

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

expression может быть полем или формулой.

Применение

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

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

Рассмотрим несколько примеров функции MAX и изучим, как использовать функцию MAX в Oracle / PLSQL.

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

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

В этом примере функции MAX, выражение MAX (salary) представлено под псевдоним “Highest Salary”. В результате, “Highest Salary” будет отображаться как имя поля, когда результирующий набор возвратится.

Пример – использование GROUP BY

В некоторых случаях, вам необходимо будет использовать группировку GROUP BY с функцией MAX.
Например, вы могли бы использовать функцию MAX, чтобы вернуть название отдела и максимальную зарплату отдела.

Мы указали один столбец в запрос SELECT, не заключенный в функцию MAX. Необходимо использовать группировку GROUP BY. Поле department, поэтому, должно быть, перечислено в GROUP BY.

Вопросы и ответы

Вопрос:

Я пытаюсь вытащить некоторую информацию из таблицы. Для простоты, скажем таблица (report_history) имеет 4 колонки: user_name, report_job_id, report_name и report_run_date.

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

Мой первоначальный запрос:

работает нормально. Тем не менее, это не дает имя пользователя, запустившего отчет.

Добавление user_name к списку выборки и к предложению GROUP BY возвращает несколько строк для каждого отчета; результаты показывают, в последнее время каждый человек запускал каждый отчет остается вопросом. (т.е. ПОЛЬЗОВАТЕЛЬ1 запускал ОТЧЕТ1 01-Июль-03, ПОЛЬЗОВАТЕЛЬ2 запускал ОТЧЕТ1 01-АВГ-03). Я не хочу, что …. я просто хочу знать, кто запускал определенный отчет и когда последний раз он был запущен.

Есть предложения?

Ответ:

Это все становится немного сложнее. В запросе ниже SQL SELECT вернет результаты, которые вы хотите:

Во-первых, мы присвоим псевдоним rh первому экземпляру таблицы report_history.
Во-вторых, мы включили два компонента в предложении FROM. Первым из них является таблица называется report_history (псевдоним RH). Второй оператор выбора:

(SELECT MAX(report_run_date) AS maxdate, report_name
FROM report_history
GROUP BY report_name) maxresults

Имеем псевдоним MAX(report_run_date) как maxdate и имеем псевдоним всего результирующего набора как maxresults.

Теперь, когда мы составили этот запрос в пределах нашего FROM, Oracle позволит нам объединить эти результаты нашей исходной таблицы report_history. Таким образом, мы объединили поля report_name и report_run_date таблицы с псевдонимами rh и maxresults. Это позволили нам получить report_name, MAX(report_run_date), а также user_name.

Смотри также в категории: Числовые / математические функции Oracle / PLSQL