SQL PHP HTML ASP JavaScript articles and free scripts to download If you are facing any problem in viewing this page, please tell us
 

SQL MAX Command


Some time we will be searching for the maximum value in a field of any MySql table. MAX sql command will return the record with  maximum or highest value in the SQL table. Same way we can get the minimum value of a range of records by using SQL MIN command



What happen if we apply MAX command to a non numeric field? We will get the record with highest alphabet. But the best way to use MAX command is to apply it in a numeric field. 

id name class mark
1 John Deo Four 75
2 Max Ruin Three 85
3 Arnold Three 55
4 Krish Star Four 60
5 John Mike Four 60
6 Alex John Four 55
 
We will apply the MAX command here like this to the field  mark

SELECT max( mark ) FROM `student`

max(mark)
85
The command collected the maximum value of the mark field and displayed. We can define some header  like this also.

SELECT MAX(mark) as max_mark FROM `student` 

max_mark
85

Using Subqueries

To display all fields like name, class, id along with the highest mark we can use like this. This will display one record with all details of the highest mark

SELECT id,name,class,MAX(mark) as max_mark FROM `student`

As you can see below the above query will display Maximum mark but not the matching id, name, class. So we will try by using sub-query
idnameclassmax_mark
2Max RuinThree85
We can get matching output of id, name,class by using where clause by matching with maximum mark using subquery

SELECT * FROM `student` WHERE mark=(select max(mark) from student)

Using Group By

Now let us find out what is the maximum mark ( or highest ) in each class. Here we can use the Group By command to find out the maximum mark obtained by each class

SELECT class, max( mark ) as max_mark FROM `student` GROUP BY class

class max_mark
Four 75
Three 85

You can see above that maximum mark of each class is displayed. Since we have two class in our table so the sql command has returned two class with highest mark in each of them. We have to use Group By clause if we ask for the query to return any other field name other than the max. Otherwise system will generate error.

Related Tutorial
MySQL Min
MySQL Avg
MySQL Sum

We can add condition to the sql command to get our desired result. We can add one Where clause to the query to consider records for a perticular class only  ( say Four)

SELECT max( mark ) as maximu_mark, class FROM student where class ='Four' GROUP BY class
max_mark class
75 Four

alper05-06-2009
very productive examples. it teaching GROUP BY statement by one example. thank you for your post.
David Koh15-06-2009
Another way to get the whole row where max_mark is the highest.
Instead of the below from the example:
SELECT * FROM `student` WHERE mark=(select max(mark) from student)

We can do:
SELECT * FROM `student` ORDER BY max_mark DESC LIMIT 1

This might save db processing power instead of having 2 select statements
smo17-06-2009
This is explained here in getting highest number by using limit
rammohan 26-06-2009
how to get the last entry in pages in a table
ajay30-07-2009
how to get name of topper of every class
super10-08-2009
What if you had two or three top students (say arnold got 85 as well), how would you display the name of all of them with there mark?
smo11-08-2009
You can display top 3 by using order by and limit command. Here is the sql to display top three records.
arcavalierenero12-09-2009
This sample isn't correct:
SELECT id,name,class,MAX(mark) as max_mark FROM `student`
smo12-09-2009
Yes, you are right. To display matching records we have to use subquery. The content is modified with the above explanation.
Doug M15-09-2009
I got a complex array I need to build from SQL. Using a theory like this, how could I retrieve the top 3 scores per game from a highscores table? Got a mod I am working on where people are asking that. I am hoping there is a simple SQL solution rather than building a complex array.
smo17-09-2009
you can use limit and order by to get top 3 records.
karthi06-01-2010
how to display first 2 toppers in the class? any idea..
Post Comment This is for short comments only. Use the forum for more discussions.
Name
Email( not to be displayed)Privacy Policy
1+2=This is to prevent automatic submission by spammers. Please enter the result of the sum as asked
Sections
PHP
JavaScript
ASP
HTML
SQL
Photoshop
Articles SEO
SQL Tutorial List
MySQL Math
SQL Commands
SQL Sections
Date & Time
Join Table
String
Math
Subscribe
Submit your email address and receive article and product notifications. Your email is safe with us.