SUM of Multiple columns of MySQL table

Sum of multiple columns We have seen how the sum function is used to get the total value of a column in a mysql table. Now we will learn how to get the query for sum in multiple columns and for each record of a table. For a better understanding we will change our student table a bit by adding marks in different subjects for each record. Now the table will be like this.
2Max RuinThree855685
4Krish StarFour605070
5John MikeFour608090
6Alex JohnFour559080
7My John RobFifth786070
9Tes QrySix786070
10Big JohnFour554055
We will write a query to display sum of all marks of each student. Note that here we will not use sum sql function inside our query. Here is the code.
SELECT id, name, class,( social + science + math) AS total FROM `student3`
2Max RuinThree226
4Krish StarFour180
5John MikeFour230
6Alex JohnFour225
7My John RobFifth208
9Tes QrySix208
10Big JohnFour150

Multiple columns SUM

As you can see the above sum is sum of marks of each student. This is horizontal sum in our table. Now we will try to get sum of marks of all students in all subjects. So the sum is to be collected in all three columns.

SELECT sum(social + math + science ) as total from student3
We can add various other sql commands like where clause etc.

Calculating Percentage of Marks

Let us assume the full mark in each subject is 95. So to get the percentage mark of each student we have to multiply 95 with 3 ( for three subjects ) and then divide that from the total and multiply with 100 here is the query.
SELECT name, (( social + science + math)/(95*3) * 100) AS percentage  FROM `student3`

Displaying Total Mark with Percentage

Both total mark and percentage we can display like this
SELECT id, name, class,( social + science + math) as Total,(( social + science + math)/(95*3) * 100) AS percentage  FROM `student3`
The Output is here.
2Max RuinThree22679.2982
4Krish StarFour18063.1579
5John MikeFour23080.7018
6Alex JohnFour22578.9474
7My John RobFifth20872.9825
9Tes QrySix20872.9825
10Big JohnFour15052.6316
The above percentage data is having four decimal places, we can format these numbers by using ROUND Sql command.

Sum of the row data of each record

Now we will try to display all marks and sum of them for each student. Here is the query
SELECT id,name,class, social, math, science, sum(social + math + science ) as Total from student3 group by id
The output is here
2Max RuinThree858556226
4Krish StarFour607050180
5John MikeFour609080230
6Alex JohnFour558090225
7My John RobFifth787060208
9Tes QrySix787060208
10Big JohnFour555540150

Show Grade based on the total mark ( using CASE statement )

We can display grade of the student by using CASE statement in our Query. MySQL Case query executes the statement based on the matching condition. Here we will check total mark against set marks for different levels of grade and allot Grade accordingly.

Read more on CASE WHEN THEN statement here.

Here is our query.
SELECT id,name,class, social, math, science, sum(social + math + science ) as Total ,
CASE WHEN  sum(social + math + science ) >= 225 THEN 'A' 
 WHEN  sum(social + math + science ) >=200  THEN 'B' 
WHEN  sum(social + math + science ) >=170  THEN 'C'
END AS grade 

from student3 group by id
Output is here.
id name class social math science Total grade
2 Max Ruin Three 85 85 56 226 A
3 Arnold Three 55 75 40 170 C
4 Krish Star Four 60 70 50 180 C
5 John Mike Four 60 90 80 230 A
6 Alex John Four 55 80 90 225 A
7 My John Rob Fifth 78 70 60 208 B
8 Asruid Five 85 90 80 255 A
9 Tes Qry Six 78 70 60 208 B
10 Big John Four 55 55 40 150 FAIL

Storing total mark in different table.

We can store sum of marks in each subjects of each student in a different table. This will be useful for final report printing or displaying.

Storing sum of each record in different table

PHP code to display

We can execute the above code and display records by using PHP. Within the code first we will connect to MySQL database.
require "config.php"; // Database connection $count="SELECT id,name, social, math, science, sum(social + math + science ) as total from student3 group by id"; echo "<table>"; echo "<tr><th>id</th><th>name</th><th>social</th><th>math</th><th>science</th><th>total</th></tr>"; foreach ($dbo->query($count) as $row) { echo "<tr ><td>$row[id]</td><td>$row[name]</td><td>$row[social]</td><td>$row[math]</td><td>$row[science]</td><td>$row[total]</td></tr>"; } echo "</table>"; ?>

Download the SQL dump of the above student table



How to calculate Total Mark diffrent between Max Ruin and Arnold?


how to multiply two columns and set the sum as the value of another column in sql server table?
Javier Rivera


Nice, but is there a way to add those values to thw query SELECT name, ( social + science + math) AS total FROM `student3` WHERE total>200
krishnamoorthy M


math function in oops php using program


How do you take that total and insert the total into another column named total for each row?


How to calculate Percentage different between date in two table.


how to create formula to calculate data integer from different table in sql database server?


How to get two max value from single table
Sundar Shanmuganathan


I need to dial play all values from table and also calculate all column value and displacing in separate row

Name Eng Math
Fore Eg : A 10 20
b 20 30

Count(2) 30 50


Say we have a column "Total" in student3 table. How can I insert the sum in the "Total" column? Like we do in excel? Can you please help?


How to display total price of products but excluding two different products?


how to display grades from marks using php
Benjamin Quartey


This is great. But How do we select for an example the best three subject of a student in a row from about five subjects ? Class Position may not always depend on the sum of all subject but could also depend on the best 3 etc. Kindly assist on that also


You don't have to use PHP code to get the grade, the same Query can be modified with CASE to list our GRADE of the student.

This part will be added shortly.


Grade is calculated by using CASE , this part is added to the tutorial


is posible something like... sum 7 columns "SELECT SUM(col1) as a, SUM(col2) as b, SUM(col3) as c, SUM(col4) as d, SUM(col5) as e, SUM(col6) as f, SUM(col7) as g FROM mytable')" and get 5 highest values "limit 5" ?


how can the total scores be ranked and stored in another table


You can use order by to get ranked list. You can also use store sum in different table
John muthama


How do we position students or rather how do we rank them in scenario where they tie. i.e 75,72,72,72, 69,66,56.
Of course 75 position 1, how to we treat 72? because they are all position 2


You can use order by to rank students based on two columns. Here you can use rank and name so three students having same mark will be listed based on their name. You can read more on order by here.
Usha Kalamani


Hello, I have tried the above method and that's working fine. But, I want to insert result from Excel Sheet into database which is stored in different format. For every student I want to add marks in a same column titled marks. How to achieve that.


Is it good practice to use such sql query like this in a php or use php to do the calculation? thanks.


Query is better.


There is a plugin available to port excel data to mysql. You can also use csv format to read excel data into mysql.

Post your comments , suggestion , error , requirements etc here .

We use cookies to improve your browsing experience. . Learn more
HTML MySQL PHP JavaScript ASP Photoshop Articles FORUM . Contact us
©2000-2020 All rights reserved worldwide Privacy Policy Disclaimer