2017-06-21 1 views
0

Voici notre tablecomment commander rang étudiant sur la base d'obtenir des marques sur différents sujet sql

name   math  physics  chemistry hindi english 
pk   85  65   45   54  40 
ashis  87  44   87   78  74 
rohit  77  47   68   63  59 
mayank  91  81   78   47  84 
komal  47  51   73   61  55 

nous voulons aboutir montrent que (la somme des notes essentiellement)

rank name   total 
1  mayank  381 
2  ashis   370 
3  rohit   314 
4  pk   289 
5  komal   287 
+0

double possible de [Comment SUM deux champs dans une requête SQL] (https: // stackoverflow.com/questions/14877797/how-to-sum-two-fields-within-an-sql-query) – Henry

+0

Veuillez montrer votre code pour obtenir une réponse de qualité. – TomServo

Répondre

0

Essayez ce

SELECT @curRank := @curRank + 1 AS rank, name, (math + physics + chemistry + hindi + history) AS total FROM table, (SELECT @curRank := 0) r ORDER BY total DESC; 

Cela va additionner tous les champs et les trier par ordre décroissant et ajouter un rang.

En faisant SELECT @curRank := 0 vous pouvez tout conserver dans une seule instruction SQL sans avoir à faire d'abord un SET.

0
SET @rank=0; 

SELECT @rank:[email protected]+1 AS rank,name,(math+physics+chemistry+hindi+english) as total 
FROM tablename ORDER BY total DESC 

cela produira le résultat souhaité que

rank | name | total 

-------------------- 
1 | mayank | 381 
2 | ashis | 370 

pour plus de détails un coup d'oeil mysql ranking results

+0

Bonne réponse! Vous pouvez gérer cela dans une déclaration SQL comme j'ai répondu, juste un petit truc à savoir. – Henry

+0

ouais, ce mec semble comme nouveau à sql, donc je ne voulais pas me compliquer. @name – vijay

+0

merci de m'avoir aidé –