Sql简介 专题
专题目录
您的位置:database > Sql简介专题 > SQL Min()函数
SQL Min()函数
作者:--    发布时间:2019-11-20

本教程通过示例演示如何使用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;

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

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

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

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函数来查找一个分组值中的最小值。


网站声明:
本站部分内容来自网络,如您发现本站内容
侵害到您的利益,请联系本站管理员处理。
联系站长
373515719@qq.com
关于本站:
编程参考手册