This Oracle tutorial explains how to use the Oracle/PLSQL MIN function.
The Oracle/PLSQL MIN function returns the minimum value of an expression.
MIN
function operates on a group of rows and return one row of output.
You can use the MIN
function with any valid expression.
For example, you can use the MIN()
with numbers, strings, and datetimes.
Null values are ignored by MIN
.
You can use the DISTINCT
keyword to exclude duplicate entries.
The syntax for the Oracle/PLSQL MIN function is:
SELECT MIN( expression ) FROM tables WHERE conditions;
expression
can be a numeric field or formula.
The following SQL returns the minimum salary of all employees.
SELECT MIN(salary) AS "Lowest Salary"
FROM employees;
The following SQL uses the MIN function to return the name of the department and the minimum salary in the department.
SELECT department, MIN(salary) AS "Lowest salary"
FROM employees
GROUP BY department;
CREATE TABLE EMP (EMPNO NUMBER(4) NOT NULL,
ENAME VARCHAR2(10),
HIREDATE DATE);
-- from w ww.j a va 2s . com
INSERT INTO EMP VALUES (1, 'SMITH', TO_DATE('17-DEC-1980', 'DD-MON-YYYY'));
INSERT INTO EMP VALUES (2, 'ALLEN', TO_DATE('20-FEB-1981', 'DD-MON-YYYY'));
INSERT INTO EMP VALUES (3, 'WARD', TO_DATE('22-FEB-1981', 'DD-MON-YYYY'));
INSERT INTO EMP VALUES (4, 'JONES', TO_DATE('2-APR-1981', 'DD-MON-YYYY'));
INSERT INTO EMP VALUES (5, 'MARTIN',TO_DATE('28-SEP-1981', 'DD-MON-YYYY'));
SQL> select min(empno) from emp;
MIN(EMPNO)
----------
1
SQL>
Using MIN
with date
value:
SQL> select min(HIREDATE) from emp;
MIN(HIRED
---------
17-DEC-80
SQL>
When MIN()
is working on strings, the strings are ordered alphabetically with the minimum string being at the top of the list.
SQL> select min(ename) from emp;
MIN(ENAME)
----------
ALLEN
SQL>
Using the MIN
function with the group by clause:
CREATE TABLE EMP (EMPNO NUMBER(4) NOT NULL,
ENAME VARCHAR2(10),
JOB VARCHAR2(9),
SAL NUMBER(7, 2),
DEPTNO NUMBER(2));
-- from www . jav a2s . c o m
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> select min(sal) from emp group by deptno;
MIN(SAL)
----------
1250
800
2850
SQL>