- Sum rows in php and rank
- **studentId** **Math** **English** **Science** **className**
- 1 80 66 85 3p1
- 2 75 83 84 3p1
- 3 70 88 90 3p1
- 4 50 82 50 5p3
- 5 88 77 77 3p1
- 6 92 97 96 3p1
- SET @myclassName:=0;
- SET @myRank:= 0;
- SET @myNextRank:= 0;
- SET @myTotals:= 0;
- SET @myclassName:=0;
- SET @myRank:= 0;
- SET @myNextRank:= 0;
- SET @myTotals:= 0;
- <?php
- $StudentMarkz = "SELECT X.*,
- @myRank:=CASE WHEN @myclassName <> className
- THEN @myNextRank:=1
- WHEN @myTotals <> totals
- THEN @myRank:=@myNextRank
- ELSE @myRank
- END AS Rank,
- @myclassName:=className AS myclassName,
- @myTotals:=totals AS myTotals,
- @myNextRank:=@myNextRank+1 AS myNextRank
- FROM ( SELECT studentmarkstable.studentId,surname, firstName,
- Math,
- English,
- Science,
- SocialStudies,
- studentmarkstable.className,
- Math + English + Science + SocialStudies AS totals
- FROM studentmarkstable, student
- WHERE student.studentId=studentmarkstable.studentId
- AND studentmarkstable.className='3P1'
- ORDER BY className ASC,
- 6 DESC
- ) X";
- $marksQuery = mysql_query($StudentMarkz) or die (mysql_error());
- ?>
- SET @myClass:=0;
- SET @myRank:= 0;
- SET @myTotals:= 0;
- SELECT X.*,
- @myRank:=CASE WHEN @myClass <> class
- THEN 1
- WHEN @myTotals <> totals
- THEN @myRank+1
- ELSE @myRank
- END AS Rank,
- @myClass:=class AS myClass,
- @myTotals:=totals AS myTotals
- FROM ( SELECT studentId,
- Math,
- English,
- Science,
- Class,
- Math + English + Science AS totals
- FROM studentGrades
- ORDER BY 5 ASC,
- 6 DESC
- ) X
- studentId Math English Science Class totals Rank myClass myTotals
- 2 75 83 84 3p1 242 1 3p1 242
- 5 88 77 77 3p1 242 1 3p1 242
- 1 80 66 85 3p1 231 2 3p1 231
- 6 92 97 96 5p2 285 1 5p2 285
- 3 70 88 90 5p2 248 2 5p2 248
- 4 50 82 50 5p2 182 3 5p2 182
- SET @myClass:=0;
- SET @myRank:= 0;
- SET @myNextRank:= 0;
- SET @myTotals:= 0;
- SELECT X.*,
- @myRank:=CASE WHEN @myClass <> class
- THEN @myNextRank:=1
- WHEN @myTotals <> totals
- THEN @myRank:=@myNextRank
- ELSE @myRank
- END AS Rank,
- @myClass:=class AS myClass,
- @myTotals:=totals AS myTotals,
- @myNextRank:=@myNextRank+1 AS myNextRank
- FROM ( SELECT studentId,
- Math,
- English,
- Science,
- Class,
- Math + English + Science AS totals
- FROM studentGrades
- ORDER BY 5 ASC,
- 6 DESC
- ) X
- studentId Math English Science Class totals Rank myClass myTotals myNextRank
- 2 75 83 84 3p1 242 1 3p1 242 2
- 5 88 77 77 3p1 242 1 3p1 242 3
- 1 80 66 85 3p1 231 3 3p1 231 4
- 6 92 97 96 5p2 285 1 5p2 285 2
- 3 70 88 90 5p2 248 2 5p2 248 3
- 4 50 82 50 5p2 182 3 5p2 182 4
- $sql = "SELECT studentId, Math, Engish, Science FROM table";
- $query = mysql_query($sql) or die("Request not successfull!");
- $results = array();
- while ($result = mysql_fetch_array($adressen_query)){
- $results[ $result['studentId'] ] = $result['Math'] + $result['Engish'] + $result['Science'];
- }
- // results now contains all studentIds as Keys and all added result values as value.
- // sort descending
- $results = arsort( $results );
- SELECT 'All' FROM table ORDER BY 'All' DESC;