SQL MIN() & MAX()函数

SQL MIN() & MAX()函数

在SQL中,MIN()和MAX()是聚合函数。MIN()函数返回所选列的最小值,而MAX()函数返回所选列的最大值。

聚合函数通常在数据库、电子表格和现在常见的统计软件包中使用。

数学计算将一系列值作为输入,并产生一个表示给定数据的重要性的单个值表达式,称为聚合函数。

语法

以下是MIN()函数的语法

SELECT MIN(column_name) FROM table_name WHERE conditions;

以下是MAX()函数的语法

SELECT MAX(column_name) FROM table_name WHERE conditions;

正如我们在上面看到的,这些函数与WHERE子句一起用于从过滤后的记录中选择最大值。

示例

在以下示例中,我们使用Customers表运行MIN()和MAX()函数的查询。这些函数分别预计显示该表中的最低工资和最高工资。

假设我们使用以下查询创建了一个名为Customers的表,其中包含顾客的个人详细信息,包括姓名、年龄、地址和工资等。

CREATE TABLE CUSTOMERS (
   ID INT NOT NULL,
   NAME VARCHAR (20) NOT NULL,
   AGE INT NOT NULL,
   ADDRESS CHAR (25),
   SALARY DECIMAL (18, 2),       
   PRIMARY KEY (ID)
);

现在,使用INSERT语句将值插入到该表中,如下所示:

INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (1, 'Ramesh', 32, 'Ahmedabad', 2000.00 );

INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (2, 'Khilan', 25, 'Delhi', 1500.00 );

INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (3, 'kaushik', 23, 'Kota', 2000.00 );

INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (4, 'Chaitali', 25, 'Mumbai', 6500.00 );

INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (5, 'Hardik', 27, 'Bhopal', 8500.00 );

INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (6, 'Komal', 22, 'MP', 4500.00 );

INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (7, 'Muffy', 24, 'Indore', 10000.00 );

表将被创建为 −

+----+----------+-----+-----------+----------+
| ID | NAME     | AGE | ADDRESS   | SALARY   |
+----+----------+-----+-----------+----------+
|  1 | Ramesh   |  32 | Ahmedabad |  2000.00 |
|  2 | Khilan   |  25 | Delhi     |  1500.00 |
|  3 | kaushik  |  23 | Kota      |  2000.00 |
|  4 | Chaitali |  25 | Mumbai    |  6500.00 |
|  5 | Hardik   |  27 | Bhopal    |  8500.00 |
|  6 | Komal    |  22 | MP        |  4500.00 |
|  7 | Muffy    |  24 | Indore    | 10000.00 |
+----+----------+-----+-----------+----------+

以下是显示客户最低和最高工资的查询语句-

SELECT MIN(SALARY), MAX(SALARY) FROM customers;

输出

执行以上查询时,结果显示如下 –

+------------------+------------------+
| (No column name) | (No column name) |
+------------------+------------------+
|   1500.0000      |  10000.0000      |
+------------------+------------------+

MAX()和MIN()函数的别名

有时候,数据库表中的字段名很难阅读和理解。因此,需要使这些字段中的数据更易于理解。这就是为什么在SQL中引入了别名的概念。

别名用于使用 “AS” 关键字为表的列分配临时自定义名称。这些自定义名称旨在更容易阅读和在执行查询时更容易访问字段。

它们也可以与MIN()和MAX()函数一起使用。

语法

以下是带有“as”关键字的MIN()函数的语法。

SELECT MIN(column_name) as alias_name FROM table_name;

以下是带有”as”关键字的MAX()函数的语法。

SELECT MAX(column_name) as alias_name FROM table_name;

示例

以下是使用MIN()函数从Customers表中获取最小年龄的SQL查询语句:

SELECT MIN(age) AS 'min_age' FROM CUSTOMERS;

输出

当我们执行上面的查询时,”age”字段中的最小值如下所示显示。

+------------------+
|     min_age      |
+------------------+
|        23        |
+------------------+

示例

在下面的示例中,我们使用MAX()函数并编写一个查询,从CUSTOMERS表中检索具有最大年龄的数据,并显示别名“max_age”。

SELECT MAX(age) AS 'max_age' FROM CUSTOMERS;

输出

当我们执行上面的查询时,将显示“age”字段中的最大值,如下所示。

+------------------+
|       max_age    |
+------------------+
|        35        |
+------------------+

MAX()和MIN()与字符串

除了数值之外,我们还可以将MAX()和MIN()函数与字符串数据类型(如文本)一起使用。

示例

以下是使用MIN()函数从customer表中检索客户名称之间的最小值的查询 –

SELECT MIN(first_name) AS min_first_name FROM CUSTOMERS;

Following is the query to retrieve the maximum value among the names of customers in the customer table using the MAX() function −

SELECT MAX(first_name) AS max_first_name FROM CUSTOMERS;

选择带最小值或最大值的整行

如果我们想显示带有最大值或最小值的整行,可以使用嵌套的“select”语句。

语法

下面是选择包含最小年龄的整行的语法。

SELECT * FROM CUSTOMERS WHERE column_name = (SELECT MIN(column_name) FROM CUSTOMERS);

下面是选择包含最大age的整行的语法

SELECT * FROM CUSTOMERS WHERE column_name = (SELECT MAX(column_name) FROM CUSTOMERS);

示例

在下面的示例中,我们使用MAX()函数并编写一个查询,从CUSTOMERS表中检索具有最大名称的行。

SELECT * FROM CUSTOMERS WHERE NAME = (SELECT MAX(NAME) FROM CUSTOMERS);

输出

当我们执行上述查询时,我们将得到以下结果−

+----+--------+-----+-----------+-----------+
| ID | NAME   | AGE | ADDRESS   | SALARY    |
+----+--------+-----+-----------+-----------+
|  1 | Ramesh |  32 | Ahmedabad | 2000.0000 |
+----+--------+-----+-----------+-----------+
1 行结果 (0.05 秒)

在HAVING子句中使用MIN()和MAX()

使用min()和max()函数以及having子句可以根据列的最小和最大值来过滤数据。

语法

min和max与having子句的语法如下所示 −

SELECT column_name,
MAX(column_name)/MIN(column_name)
FROM table_name
GROUP BY column_name
HAVING MIN(column_name)/MAX(column_name) > value;

示例

在下面的示例中,我们尝试使用MIN()函数和having子句获取客户的ID、姓名和工资。

SELECT ID, NAME,
MAX(SALARY) AS MAX_Salary
FROM customers
GROUP BY NAME, ID
HAVING MIN(SALARY) > 5000;

输出

执行上述查询时,我们可以看到最小工资大于5000的员工的最高工资的详细信息,如下表所示 −

+----+----------+------------+
| ID | NAME     | MAX_Salary |
+----+----------+------------+
|  4 | Chaitali |  6500.0000 |
|   5 | Hardik   |  8500.0000 |
|   7 | Muffy    | 10000.0000 |
+----+----------+------------+

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程