SQL Server MAX(): Get Maximum Value in a Column

In SQL Server, the MAX() function is an aggregate function that returns the maximum value in the column or expression.

It is an aggregate function so it canbe used with the GROUP BY clause to find the maximum value in a group.

MAX(expression)

Parameters

expression: It can be a constant, a table column, or function, and any combination of arithmetic, or string operators.

MAX can be used with numeric, character, uniqueidentifier, or with datetime data.

Return Value

Returns the maximum value in the group of the same data type. It ignores the NULL values.

Get Maximum Value in the Column

The following query fetches the maximum Salary from the Employee table.

Example: MAX()
SELECT MAX(Salary) AS MaxSal FROM Employee;

To check the above result, use the following query to fetch all records from the Employee table ordered by Salary in ascending order.

SELECT * FROM Employee ORDER BY Salary;

As you can see, the maximum Salary in the Employee is 200000.

MAX() with String Column

The MAX() function can be used on the string column. For example, the following uses the MAX() function on the LastName column of the Employee table. It will sort the column alphabetically and the last value will be returned.

Example: MAX()
SELECT MAX(LastName) FROM Employee;

Above, 'Troy' is the last value alphabetically and so it will be returned.

MAX() with GROUP BY Clause

In the following example, the maximum salary for each department is returned by using the GROUP BY clause. Here the GROUP BY clause groups the employees based on their department and then the maximum salary in each group is returned.

Example: MAX() with Group By
SELECT DepartmentId, MAX(Salary) AS DeptMaxSalary
        FROM Employee
        GROUP BY DepartmentId;

MAX() with HAVING Clause

The MAX() function can be used with the HAVING clause as shown in the below example. Here the GROUP BY clause groups the employees according to their departments, gets the maximum salary of each department, and then the HAVING clause filters the result by returning only those departments having a maximum salary greater than 50000.

Example: MAX() with Having Clause
SELECT DepartmentId, Max(Salary) DeptMaxSal FROM Employee
        GROUP BY DepartmentID
        HAVING MAX (Salary) > 50000;

Get Maximum and Minimum Value

In the following example, the MIN() and MAX() functions are used on the Salary column of the Employee table. The minimum and maximum salary in the table is returned.

Example: MIN() and MAX()
SELECT MIN(Salary) AS MinSal, MAX(Salary) AS MaxSal FROM Employee;