MAX function

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.


CREATE TABLE EMP (EMPNO NUMBER(4) NOT NULL,
                  ENAME VARCHAR2(10),
                  JOB VARCHAR2(9),
                  SAL NUMBER(7, 2),
                  DEPTNO NUMBER(2));

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>
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);

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>
Home »
Oracle »
Aggregate Functions » 

Related: