SQL Server MAX() Function

Summary: in this tutorial, you will learn how to use the SQL Server MAX() function to find the maximum value in a set.

Introduction to the SQL Server MAX() function

In SQL Server, the MAX() function is an aggregate function that returns the maximum value in a set.

Here’s the syntax of the MAX() function:

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

The MAX() function accepts an expression that can be a column or a valid expression.

Similar to the MIN() function, the MAX() function ignores NULL and considers all values including duplicates.

SQL Server MAX() function examples

We will use the products and brands tables for the demonstration:

products brands

1) Basic SQL Server MAX() function example

The following statement uses the MAX() function to find the highest list price of all products in the products table:

SELECT
    MAX(list_price) max_list_price
FROM
    production.products;Code language: SQL (Structured Query Language) (sql)

Output:

max_list_price
--------------
11999.99Code language: CSS (css)

The following example uses the MAX() function in a subquery to find the highest list price and outer query to retrieve the products with the highest prices:

SELECT
  product_id,
  product_name,
  list_price
FROM
  production.products
WHERE
  list_price = (
    SELECT
      MAX(list_price)
    FROM
      production.products
  );Code language: SQL (Structured Query Language) (sql)

Output:

product_id | product_name                  | list_price
-----------+-------------------------------+-----------
155        | Trek Domane SLR 9 Disc - 2018 | 11999.99
(1 row)

In this example:

  • First, use the MAX() function in the subquery to return the highest list price of all products.
  • Then, retrieve the products whose list prices equal the highest price returned from the subquery in the outer query.

2) Using the MAX() with GROUP BY clause example

The following statement uses the MAX() function with the GROUP BY clause to retrieve the brand names and the highest list price for each brand:

SELECT
  brand_name,
  MAX(list_price) max_list_price
FROM
  production.products p
  INNER JOIN production.brands b ON b.brand_id = p.brand_id
GROUP BY
  brand_name
ORDER BY
  brand_name;Code language: SQL (Structured Query Language) (sql)

Output:

SQL Server MAX function with GROUP BY clause

In this example:

  • First, divide the products into groups by the brand names using the GROUP BY clause.
  • Then, apply the MAX() function to each group to get the highest list price for each brand name.

3) Using the MAX() with HAVING clause example

The following example retrieves brand names and their corresponding highest list prices and filters out brands with the highest list prices less than or equal to 1000:

SELECT
    brand_name,
    MAX(list_price) max_list_price
FROM
    production.products p
    INNER JOIN production.brands b
        ON b.brand_id = p.brand_id 
GROUP BY
    brand_name
HAVING 
    MAX(list_price) > 1000
ORDER BY
    max_list_price DESC;Code language: SQL (Structured Query Language) (sql)

Output:

brand_name   | max_list_price
-------------+--------------
Trek         | 11999.99
Electra      | 2999.99
Heller       | 2599.00
Surly        | 2499.99
Sun Bicycles | 1559.99
Haro         | 1469.99
(6 rows)

4) Using the MAX() function with date columns

The following example uses the MAX() function to find the orders with the latest required date:

SELECT
  MAX(required_date) latest_required_date
FROM
  sales.orders;Code language: SQL (Structured Query Language) (sql)

Output:

latest_required_date
--------------------
2018-12-28

The following example uses the MAX() function with the GROUP BY clause to find the latest required date of all orders grouped by staff names:

SELECT
  s.first_name,
  MAX(required_date) latest_required_date
FROM
  sales.orders o
  INNER JOIN sales.staffs s ON s.staff_id = o.order_id
GROUP BY
  s.first_name
ORDER BY
  latest_required_date;Code language: SQL (Structured Query Language) (sql)

Output:

first_name | latest_required_date
-----------+---------------------
Fabiola    | 2016-01-03
Mireya     | 2016-01-04
Virgie     | 2016-01-04
Genna      | 2016-01-05
Kali       | 2016-01-05
Jannette   | 2016-01-06
Bernardine | 2016-01-06
Marcelene  | 2016-01-07
Venita     | 2016-01-07
Layla      | 2016-01-08
(10 rows)

5) Using the MAX() function with text column

The following statement uses the MAX() function to return the last product names sorted alphabetically within each category:

SELECT
  c.category_name   category_name,
  MIN(product_name) product_name
FROM
  production.products p
  INNER JOIN production.categories c ON c.category_id = p.category_id
GROUP BY
  c.category_name;Code language: SQL (Structured Query Language) (sql)

Output:

category_name       | product_name
--------------------+------------------------------------------------
Children Bicycles   | Electra Cruiser 1 (24-Inch) - 2016
Comfort Bicycles    | Electra Townie Balloon 3i EQ - 2017/2018
Cruisers Bicycles   | Electra Amsterdam Fashion 3i Ladies' - 2017/2018
Cyclocross Bicycles | Surly Straggler - 2016
Electric Bikes      | Electra Loft Go! 8i - 2018
Mountain Bikes      | Haro Flightline One ST - 2017
Road Bikes          | Surly ECR - 2018
(7 rows)

Summary

  • Use the MAX() function to find the maximum value in a set of values.
  • The MAX() function ignores NULL.
Was this tutorial helpful?