This Oracle tutorial explains how to use the Oracle/PLSQL MAX function.
The Oracle/PLSQL MAX function returns the maximum value of an expression.
MAX
function operates on a group of rows and return one row of output.
You can use the MAX
function with any valid expression.
For example, you can use the MAX()
with numbers, strings, and datetimes.
Null values are ignored by MAX
.
You can use the DISTINCT
keyword to exclude duplicate entries.
The syntax for the Oracle/PLSQL MAX function is:
SELECT MAX( expression ) FROM tables WHERE conditions;
expression
can be a numeric field or formula.
The following SQL returns how the maximum salary of all employees.
SELECT MAX(salary) AS "Highest Salary"
FROM employees;
The following example uses the MAX function to return the name of the department and the maximum salary in the department.
SELECT department, MAX(salary) AS "Highest salary"
FROM employees
GROUP BY department;
CREATE TABLE EMP (EMPNO NUMBER(4) NOT NULL,
ENAME VARCHAR2(10),
JOB VARCHAR2(9),
SAL NUMBER(7, 2),
DEPTNO NUMBER(2));
-- from w w w. j a v a 2s .com
INSERT INTO EMP VALUES (1, 'SMITH', 'CLERK', 800, 20);
INSERT INTO EMP VALUES (2, 'ALLEN', 'SALESMAN', 1600, 30);
INSERT INTO EMP VALUES (3, 'WARD', 'SALESMAN', 1250, 30);
INSERT INTO EMP VALUES (4, 'JONES', 'MANAGER', 2975, 20);
INSERT INTO EMP VALUES (5, 'MARTIN','SALESMAN', 1250, 30);
INSERT INTO EMP VALUES (6, 'BLAKE', 'MANAGER', 2850, 30);
INSERT INTO EMP VALUES (7, 'CLARK', 'MANAGER', 2850, 10);
INSERT INTO EMP VALUES (8, 'SCOTT', 'ANALYST', 3000, 20);
INSERT INTO EMP VALUES (9, 'KING', 'PRESIDENT',3000, 10);
INSERT INTO EMP VALUES (10,'TURNER','SALESMAN', 1500, 30);
INSERT INTO EMP VALUES (11,'ADAMS', 'CLERK', 1500, 20);
SQL>
SQL> select max(empno) from emp;
MAX(EMPNO)
----------
11
SQL>
When MAX()
is working on strings, the strings are ordered alphabetically with the maximum string being at the bottom of a list.
SQL>
SQL> select max(ename) from emp;
MAX(ENAME)
----------
WARD
SQL>
Using the MAX
function with the group by
clause:
SQL>-- w w w .ja v a2 s .c o m
SQL> select max(sal) from emp group by deptno;
MAX(SAL)
----------
2850
3000
3000
SQL>
Using MAX
with date
value:
SQL> CREATE TABLE EMP (EMPNO NUMBER(4) NOT NULL,
2 ENAME VARCHAR2(10),
3 HIREDATE DATE);
-- w w w .j av a2 s . c om
Table created.
SQL>
SQL> INSERT INTO EMP VALUES (1, 'SMITH', TO_DATE('17-DEC-1980', 'DD-MON-YYYY'));
1 row created.
SQL> INSERT INTO EMP VALUES (2, 'ALLEN', TO_DATE('20-FEB-1981', 'DD-MON-YYYY'));
1 row created.
SQL> INSERT INTO EMP VALUES (3, 'WARD', TO_DATE('22-FEB-1981', 'DD-MON-YYYY'));
1 row created.
SQL> INSERT INTO EMP VALUES (4, 'JONES', TO_DATE('2-APR-1981', 'DD-MON-YYYY'));
1 row created.
SQL> INSERT INTO EMP VALUES (5, 'MARTIN',TO_DATE('28-SEP-1981', 'DD-MON-YYYY'));
1 row created.
SQL>
SQL> select max(HIREDATE) from emp;
MAX(HIRED
---------
28-SEP-81
SQL>