SQL MIN 函数

摘要:本教程通过实例帮助您精通 SQL MIN 函数。学完本教程后,您将知道如何有效地应用 MIN 函数来查找一组值中的最小值。

SQL MIN 函数简介 #

SQL MIN 函数返回一组值中的最小值。

以下是 MIN 函数的语法。

MIN(expression)Code language: SQL (Structured Query Language) (sql)

MAX 函数类似,MIN 函数也会忽略 NULL 值,并且在使用 DISTINCT 选项时没有任何影响。

SQL MIN 函数示例 #

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

employees_table

要查找员工的最低(最小)薪水,您可以对 employees 表的 salary 列应用 MIN 函数。

SELECT
  MIN(salary) min_salary
FROM
  employees;Code language: SQL (Structured Query Language) (sql)

试一试

输出

 min_salary
------------
    2500.00Code language: CSS (css)

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

SELECT
  first_name,
  last_name,
  salary
FROM
  employees
WHERE
  salary = (
    SELECT
      MIN(salary)
    FROM
      employees
  );Code language: SQL (Structured Query Language) (sql)

试一试

输出

 first_name | last_name  | salary
------------+------------+---------
 Karen      | Colmenares | 2500.00

查询工作原理

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

SQL MIN 函数与 GROUP BY 结合使用的示例 #

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

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

SELECT
  department_id,
  MIN(salary)
FROM
  employees
GROUP BY
  department_id;Code language: SQL (Structured Query Language) (sql)

试一试

输出

 department_id |   min
---------------+----------
            11 |  8300.00
             9 | 17000.00
             3 |  2500.00
             5 |  2700.00
             4 |  6500.00
            10 |  6900.00
             6 |  4200.00
             2 |  6000.00
             7 | 10000.00
             1 |  4400.00
             8 |  6200.00

在此示例中,GROUP BY 子句按部门对员工进行分组。对于每个组,查询返回薪水最低的行。

只要我们能看到部门名称,结果集的信息量就不够大。要在结果集中包含部门名称,您需要使用内连接(inner join)子句将 employees 表与 departments连接起来,如下所示:

SELECT
  department_name,
  MIN(salary) min_salary
FROM
  employees e
  INNER JOIN departments d ON d.department_id = e.department_id
GROUP BY
  department_name
ORDER BY
  min_salary;Code language: SQL (Structured Query Language) (sql)

试一试

输出

 department_name  | min_salary
------------------+------------
 Purchasing       |    2500.00
 Shipping         |    2700.00
 IT               |    4200.00
 Administration   |    4400.00
 Marketing        |    6000.00
 Sales            |    6200.00
 Human Resources  |    6500.00
 Finance          |    6900.00
 Accounting       |    8300.00
 Public Relations |   10000.00
 Executive        |   17000.00Code language: PHP (php)

SQL MIN 函数与 HAVING 结合使用的示例 #

您可以使用 HAVING 子句为分组指定筛选条件。要根据 MIN 函数的结果筛选分组,您可以将 MIN 函数放在 HAVING 子句中。

例如,以下查询检索每个部门中薪水最低的员工。然后,它只包含薪水小于 3000 的部门。

SELECT
  department_name,
  MIN(salary) min_salary
FROM
  employees e
  INNER JOIN departments d ON d.department_id = e.department_id
GROUP BY
  department_name
HAVING
  MIN(salary) < 3000
ORDER BY
  min_salary;Code language: SQL (Structured Query Language) (sql)

试一试

输出

 department_name | min_salary
-----------------+------------
 Purchasing      |    2500.00
 Shipping        |    2700.00

摘要 #

  • 使用 MIN 函数查找一组值中的最小值。
  • MIN 函数与 GROUP BY 子句结合使用,以检索每个组的最小值。

数据库 #

本教程是否有帮助?
© .