【问题标题】:how to order student rank on the basis of obtain marks on different subject in sql如何根据在sql中获得不同学科的分数来排序学生排名
【发布时间】:2017-11-24 18:23:50
【问题描述】:

这是我们的餐桌

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

我们希望结果显示为(本质上对成绩求和)

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

【问题讨论】:

标签: sql position rank


【解决方案1】:
SET @rank=0;

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

这将产生您想要的结果

rank | name | total

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

更多详情请查看mysql ranking results

【讨论】:

  • 好答案!正如我回答的那样,您可以在一个 SQL 语句中处理这个问题,只需知道一个小技巧。
  • 是的,那家伙对 sql 来说似乎很陌生,所以我不想复杂化。 @名字
【解决方案2】:

试试这个

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

这将汇总所有字段并按降序对它们进行排序并添加排名。

通过SELECT @curRank := 0,您可以将所有内容保存在一条 SQL 语句中,而无需先执行 SET。

【讨论】:

    猜你喜欢
    • 2023-04-08
    • 2014-10-08
    • 1970-01-01
    • 2019-06-14
    • 1970-01-01
    • 1970-01-01
    • 2012-11-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多