MIN

2023-08-01 06:02:22  Updated

Purpose

MIN() returns the minimum value in the specified column. You can use this function as an aggregate or analytic function.

Note

  • When you use this function as an analytic function, use the OVER clause to define a window over the data on which the function operates. The function operates on a group of rows to return a list of values.
  • When you use this function as an aggregate function, the function operates on a set of rows and returns a single value. You do not need to add the OVER clause.

Syntax

MIN([ DISTINCT | UNIQUE | ALL ] expr) [ OVER (analytic_clause) ]

Parameters

Parameter Description
DISTINCT | UNIQUE | ALL Optional. Specifies whether to remove duplicates during the query. Default value: ALL.
  • ALL: returns all values, including duplicate rows, are taken into computation. Rows with NULLs are ignored.
  • DISTINCT: returns deduplicated rows. Rows with NULLs are ignored.
  • UNIQUE: returns deduplicated rows. Rows with NULLs are ignored.
expr An expression or column of the numeric, character, date, or other data types.
OVER You can use the OVER clause to define a window over the data on which the function operates. For more information, see Analytic functions.

Return type

The return type is the same as the data type of the expr parameter.

Examples

Assume that you have created the table employees.

obclient> SELECT * FROM employees;
+---------------+------------+-----------+------------+--------+
| DEPARTMENT_ID | MANAGER_ID | LAST_NAME | HIREDATE   | SALARY |
+---------------+------------+-----------+------------+--------+
|            30 |        100 | Raphaely  | 2017-07-01 |   1700 |
|            30 |        100 | De Haan   | 2018-05-01 |  11000 |
|            40 |        100 | Errazuriz | 2017-07-21 |   1400 |
|            50 |        100 | Hartstein | 2019-10-05 |  14000 |
|            50 |        100 | Raphaely  | 2017-07-22 |   1700 |
|            50 |        100 | Weiss     | 2019-10-05 |  13500 |
|            90 |        100 | Russell   | 2019-07-11 |  13000 |
|            90 |        100 | Partners  | 2018-12-01 |  14000 |
+---------------+------------+-----------+------------+--------+
8 rows in set

Example of an aggregate function

Query for the minimum value in the salary column.

obclient> SELECT MIN(salary)  FROM employees;
+-------------+
| MIN(SALARY) |
+-------------+
|        1400 |
+-------------+
1 row in set

Example of an analytic function

Group the data records in the table by the department_id column. Return the minimum value in the salary column.

obclient> SELECT department_id,last_name,hiredate,salary,
                 MIN(salary) OVER(PARTITION BY department_id) AS p_cmin
          FROM employees;
+---------------+-----------+------------+--------+--------+
| DEPARTMENT_ID | LAST_NAME | HIREDATE   | SALARY | P_CMIN |
+---------------+-----------+------------+--------+--------+
|            30 | Raphaely  | 2017-07-01 |   1700 |   1700 |
|            30 | De Haan   | 2018-05-01 |  11000 |   1700 |
|            40 | Errazuriz | 2017-07-21 |   1400 |   1400 |
|            50 | Hartstein | 2019-10-05 |  14000 |   1700 |
|            50 | Raphaely  | 2017-07-22 |   1700 |   1700 |
|            50 | Weiss     | 2019-10-05 |  13500 |   1700 |
|            90 | Russell   | 2019-07-11 |  13000 |  13000 |
|            90 | Partners  | 2018-12-01 |  14000 |  13000 |
+---------------+-----------+------------+--------+--------+
8 rows in set

Contact Us