Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on Jun 30th, 2012  |  syntax: None  |  size: 4.75 KB  |  hits: 18  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. Sum rows in php and rank
  2. **studentId** **Math** **English** **Science** **className**
  3. 1                 80        66         85       3p1
  4. 2                 75        83         84       3p1
  5. 3                 70        88         90       3p1
  6. 4                 50        82         50       5p3
  7. 5                 88        77         77       3p1
  8. 6                 92        97         96       3p1
  9.        
  10. SET @myclassName:=0;
  11. SET @myRank:= 0;
  12. SET @myNextRank:= 0;
  13. SET @myTotals:= 0;
  14.        
  15. SET @myclassName:=0;
  16. SET @myRank:= 0;
  17. SET @myNextRank:= 0;
  18. SET @myTotals:= 0;
  19.        
  20. <?php
  21.  
  22. $StudentMarkz = "SELECT X.*,
  23.                         @myRank:=CASE WHEN @myclassName <> className
  24.                                            THEN @myNextRank:=1
  25.                                       WHEN @myTotals <> totals
  26.                                            THEN @myRank:=@myNextRank
  27.                                       ELSE @myRank
  28.                                  END AS Rank,
  29.                         @myclassName:=className AS myclassName,
  30.                         @myTotals:=totals AS myTotals,
  31.                         @myNextRank:=@myNextRank+1 AS myNextRank
  32.                    FROM ( SELECT studentmarkstable.studentId,surname, firstName,
  33.                                  Math,
  34.                                  English,
  35.                                  Science,
  36.                                  SocialStudies,
  37.                                  studentmarkstable.className,
  38.                                  Math + English + Science + SocialStudies AS totals
  39.                             FROM studentmarkstable, student
  40.                            WHERE student.studentId=studentmarkstable.studentId
  41.                              AND studentmarkstable.className='3P1'
  42.                            ORDER BY className ASC,
  43.                                     6 DESC
  44.                         ) X";
  45. $marksQuery = mysql_query($StudentMarkz) or die (mysql_error());
  46.  
  47. ?>
  48.        
  49. SET @myClass:=0;
  50. SET @myRank:= 0;
  51. SET @myTotals:= 0;
  52. SELECT X.*,
  53.         @myRank:=CASE WHEN @myClass <> class
  54.                            THEN 1
  55.                       WHEN @myTotals <> totals
  56.                            THEN @myRank+1
  57.                       ELSE @myRank
  58.                  END AS Rank,
  59.         @myClass:=class AS myClass,
  60.         @myTotals:=totals AS myTotals
  61.   FROM ( SELECT studentId,
  62.                 Math,
  63.                 English,
  64.                 Science,
  65.                 Class,
  66.                 Math + English + Science AS totals
  67.            FROM studentGrades
  68.           ORDER BY 5 ASC,
  69.                    6 DESC
  70.        ) X
  71.        
  72. studentId  Math  English  Science  Class  totals  Rank  myClass  myTotals
  73. 2          75    83       84       3p1    242     1     3p1      242
  74. 5          88    77       77       3p1    242     1     3p1      242
  75. 1          80    66       85       3p1    231     2     3p1      231
  76. 6          92    97       96       5p2    285     1     5p2      285
  77. 3          70    88       90       5p2    248     2     5p2      248
  78. 4          50    82       50       5p2    182     3     5p2      182
  79.        
  80. SET @myClass:=0;
  81. SET @myRank:= 0;
  82. SET @myNextRank:= 0;
  83. SET @myTotals:= 0;
  84. SELECT X.*,
  85.         @myRank:=CASE WHEN @myClass <> class
  86.                            THEN @myNextRank:=1
  87.                       WHEN @myTotals <> totals
  88.                            THEN @myRank:=@myNextRank
  89.                       ELSE @myRank
  90.                  END AS Rank,
  91.         @myClass:=class AS myClass,
  92.         @myTotals:=totals AS myTotals,
  93.         @myNextRank:=@myNextRank+1 AS myNextRank
  94.   FROM ( SELECT studentId,
  95.                 Math,
  96.                 English,
  97.                 Science,
  98.                 Class,
  99.                 Math + English + Science AS totals
  100.            FROM studentGrades
  101.           ORDER BY 5 ASC,
  102.                    6 DESC
  103.        ) X
  104.        
  105. studentId  Math  English  Science  Class  totals  Rank  myClass  myTotals  myNextRank
  106. 2          75    83       84       3p1    242     1     3p1      242       2
  107. 5          88    77       77       3p1    242     1     3p1      242       3
  108. 1          80    66       85       3p1    231     3     3p1      231       4
  109. 6          92    97       96       5p2    285     1     5p2      285       2
  110. 3          70    88       90       5p2    248     2     5p2      248       3
  111. 4          50    82       50       5p2    182     3     5p2      182       4
  112.        
  113. $sql = "SELECT studentId, Math, Engish, Science FROM table";
  114. $query = mysql_query($sql) or die("Request not successfull!");
  115.  
  116. $results = array();
  117.  
  118. while ($result = mysql_fetch_array($adressen_query)){  
  119.   $results[ $result['studentId'] ] = $result['Math'] + $result['Engish'] + $result['Science'];
  120. }
  121. // results now contains all studentIds as Keys and all added result values as value.
  122.  
  123. // sort descending
  124. $results = arsort( $results );
  125.        
  126. SELECT 'All' FROM table ORDER BY 'All' DESC;