SQL AGGREGATE FUNCTIONS – MAX
SQL has 5 different aggregate functions (MIN, MAX, COUNT, SUM & AVG). Here we will be looking at the MAX function. The MAX function returns the maximum value of a column in the table.
SYNTAX –
SELECT MAX(column1) FROM table_name WHERE condition;
Usually, the aggregate functions are used in conjunction with the GROUP BY/ HAVING clause, which gives even more meaningful results. The syntax for the query using MAX function using GROUP BY / HAVING clause is mentioned below –
SELECT column1, MAX(column2) FROM table_name WHERE condition1 GROUP BY column1 HAVING condition2;
At first, these might look little complicated, but once we go over few examples, it will make more sense.
Illustration – Consider the below employee table in the database which stores the information pertaining to employees in a company –
ID | employee_name | age | salary | Department | manager_name |
---|---|---|---|---|---|
1 | Jimmy | 32 | 80000 | Sales | Vijay |
2 | James | 35 | 85000 | Sales | Vijay |
3 | Helen | 33 | 82000 | HR | Krish |
4 | Mary | 26 | 78000 | Quality | Warner |
5 | William | 33 | 90000 | HR | Krish |
6 | Vijay | 38 | 105000 | Sales | Roger |
7 | Krish | 38 | 105000 | HR | Roger |
Query 1 – What is the maximum salary earned by any employee in ABC company?
SELECT MAX(salary) FROM employee;
MAX(salary)
—————
105000
Query 2 – What is the maximum salary earned by any employee in ABC company whose age is less than 35 years?
SELECT MAX(salary) FROM employee WHERE age<35;
MAX(salary)
—————
90000
Query 3 – What is the maximum salary earned by employees in ABC company by each department.
SELECT Department, MAX(salary) FROM employee GROUP BY Department;
Department | MAX(Salary) |
---|---|
Sales | 85000 |
HR | 105000 |
Quality | 78000 |
Query 4 – What is the maximum salary earned by employees in ABC company by each department that gets less than 90000 as salary.
SELECT Department, MAX(salary) FROM employee GROUP BY Department HAVING MAX(salary) < 90000;
Department | MAX(Salary) |
---|---|
Sales | 85000 |
HR | 82000 |
Quality | 78000 |