SQL Min()函数

本教程通过示例演示如何使用SQL MIN函数。 在本教程之后,您将了解如何有效地应用MIN函数以查找一组值中的最小值。

1. SQL MIN函数简介

SQL MIN函数返回一组值中的最小值。 以下演示了MIN函数的语法。

MIN(expression)

MAX函数一样,MIN函数也忽略NULL值,DISTINCT选项不适用于MIN函数。

2. SQL MIN函数示例

我们将使用employees表来演示MIN函数的功能。

DESC employees;
+---------------+--------------+------+-----+---------+----------------+
| Field         | Type         | Null | Key | Default | Extra          |
+---------------+--------------+------+-----+---------+----------------+
| employee_id   | int(11)      | NO   | PRI | NULL    | auto_increment |
| first_name    | varchar(20)  | YES  |     | NULL    |                |
| last_name     | varchar(25)  | NO   |     | NULL    |                |
| email         | varchar(100) | NO   |     | NULL    |                |
| phone_number  | varchar(20)  | YES  |     | NULL    |                |
| hire_date     | date         | NO   |     | NULL    |                |
| job_id        | int(11)      | NO   | MUL | NULL    |                |
| salary        | decimal(8,2) | NO   |     | NULL    |                |
| manager_id    | int(11)      | YES  | MUL | NULL    |                |
| department_id | int(11)      | YES  | MUL | NULL    |                |
+---------------+--------------+------+-----+---------+----------------+
10 rows in set

要查找员工的最低薪水,请将MIN函数应用于employees表的salary列。

SELECT 
    MIN(salary)
FROM
    employees;
+-------------+
| MIN(salary) |
+-------------+
| 2500        |
+-------------+
1 row in set

要获取薪水最低的员工的信息,请使用以下子查询:

SELECT
    employee_id,
    first_name,
    last_name,
    salary
FROM
    employees
WHERE
    salary = (
        SELECT
            MIN(salary)
        FROM
            employees
    );

执行上面查询语句,得到以下结果:

+-------------+------------+-----------+--------+
| employee_id | first_name | last_name | salary |
+-------------+------------+-----------+--------+
|         119 | Karen      | Zhang     | 2500   |
+-------------+------------+-----------+--------+
1 row in set

首先,子查询返回最低工资。 然后,外部查询检索其薪水等于子查询返回的最低薪水的员工。

2.1. SQL MIN带有GROUP BY示例

我们经常将MIN函数与GROUP BY子句一起使用来查找每个分组中的最小值。

例如,以下查询返回每个部门(分组)中薪水最低的员工。

SELECT
    department_id,
    MIN(salary)
FROM
    employees
GROUP BY
    department_id;

执行上面查询语句,得到以下结果:

+---------------+-------------+
| department_id | MIN(salary) |
+---------------+-------------+
|             1 | 4400        |
|             2 | 6000        |
|             3 | 2500        |
|             4 | 6500        |
|             5 | 2700        |
|             6 | 4200        |
|             7 | 10000       |
|             8 | 6200        |
|             9 | 17000       |
|            10 | 6900        |
|            11 | 8300        |
+---------------+-------------+
11 rows in set

GROUP BY子句按部门对员工进行分组。 对于每个分组,查询返回薪水最低的行。但是结果集无法看到部门的名称。

要在结果集中组合部门的名称,需要使用内部联接子句将employees表与departments连接,如下所示:

SELECT
    d.department_id,
    department_name,
    MIN(salary)
FROM
    employees e
INNER JOIN departments d ON d.department_id = e.department_id
GROUP BY
    d.department_id;

执行上面查询语句,得到以下结果:
《SQL Min()函数》

2.2. SQL MIN与ORDER BY示例

要通过MIN函数的结果对分组进行排序,需要在MIN函数之后使用ORDER BY子句。

以下查询首先检索每个部门中薪水最低的员工,然后按薪酬按升序对这些部门进行排序。

SELECT
    d.department_id,
    department_name,
    MIN(salary)
FROM
    employees e
INNER JOIN departments d ON d.department_id = e.department_id
GROUP BY
    d.department_id
ORDER BY
    MIN(salary);

执行上面查询语句,得到以下结果:

《SQL Min()函数》

2.3. SQL MIN与HAVING示例

可以使用HAVING子句指定组的过滤条件。 要根据MIN函数的结果过滤分组,在MIN函数之后使用HAVING子句。

例如,以下查询检索每个部门中薪水最低的员工,并且只包括薪水低于3000的部门。

SELECT
    d.department_id,
    department_name,
    MIN(salary)
FROM
    employees e
INNER JOIN departments d ON d.department_id = e.department_id
GROUP BY
    d.department_id
HAVING
    MIN(salary) < 3000;

执行上面查询语句,得到以下结果:

+---------------+-----------------+-------------+
| department_id | department_name | MIN(salary) |
+---------------+-----------------+-------------+
|             3 | 采购            | 2500        |
|             5 | 运输            | 2700        |
+---------------+-----------------+-------------+
2 rows in set

所以现在您应该知道如何使用SQL MIN函数来查找一个分组值中的最小值。

        原文作者:SQL教程
        原文地址: https://www.yiibai.com/sql/sql-min.html
        本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
    点赞