SQL Server (Transact-SQL) MIN() 函数返回表达式或表的指定列的最小值。同样,SQL Server (Transact-SQL) MAX() 函数返回表达式或表的指定列的最大值。
语法
在 SQL Server (Transact-SQL) 中使用 MIN() 和 MAX() 函数的语法如下:
/* 使用 MIN() 函数*/
SELECT MIN(column_name)
FROM table_name
WHERE condition(s);
/* 使用 MAX() 函数*/
SELECT MAX(column_name)
FROM table_name
WHERE condition(s);
SQL Server GROUP BY 子句用于在使用一列或多列时将结果表排列到相同的组中。请注意,必须在 GROUP BY 子句中包含那些未封装在 MIN() / MAX() 函数中的列名。请参阅以下语法:
/* 使用 GROUP BY MAX() 函数*/
SELECT column1, column2, ...
MIN(column_name)
FROM table_name
WHERE condition(s)
GROUP BY column1, column2, ...;
/* 使用 GROUP BY MAX() 函数*/
SELECT column1, column2, ...
MAX(column_name)
FROM table_name
WHERE condition(s)
GROUP BY column1, column2, ...;
示例 - 单列
考虑一个名为 Employee 的数据库表,其中包含以下记录:
EmpID | Name | City | Age | Salary |
---|---|---|---|---|
1 | John | London | 25 | 3000 |
2 | Marry | New York | 24 | 2750 |
3 | Jo | Paris | 27 | 2800 |
4 | Kim | Amsterdam | 30 | 3100 |
5 | Ramesh | New Delhi | 28 | 3000 |
6 | Huang | Beijing | 28 | 2800 |
要获取Employee表中存在的员工的最低Salary,查询将是:
SELECT MIN(Salary) AS MinSalary
FROM Employee;
这将产生如下所示的结果:
MinSalary |
---|
2750 |
获取 Employee 表中存在的员工最大Salary,可以使用以下查询:
SELECT MAX(Salary) AS MaxSalary
FROM Employee;
以下代码的结果将是:
MaxSalary |
---|
3100 |
示例 - 使用 GROUP BY
考虑上面讨论的名为 Employee 的数据库,其中包含以下记录:
EmpID | Name | City | Age | Salary |
---|---|---|---|---|
1 | John | London | 25 | 3000 |
2 | Marry | New York | 24 | 2750 |
3 | Jo | Paris | 27 | 2800 |
4 | Kim | Amsterdam | 30 | 3100 |
5 | Ramesh | New Delhi | 28 | 3000 |
6 | Huang | Beijing | 28 | 2800 |
按年龄获取员工组的最低薪资,其中年龄大于27岁,可以使用以下查询:
SELECT Age, MIN(Salary) AS MinSalary
FROM Employee
WHERE Age > 27
GROUP BY Age;
上述代码的结果将是:
Age | MinSalary |
---|---|
28 | 2800 |
30 | 3100 |
获取最大Salary 按年龄划分员工组,其中年龄大于27,查询将是:
SELECT Age, MAX(Salary) AS MaxSalary
FROM Employee
WHERE Age > 27
GROUP BY Age;
上述代码的结果将是:
Age | MaxSalary |
---|---|
28 | 3000 |
30 | 3100 |