作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一张学生表,其中包含以下字段:Student_id
、Student_Name
、Mark
、Branch
。
我想在单个查询中获得每个分支的第 n 个最高标记和名称。可能吗?
例如,如果数据是
S1 | Amir | EC | 121
S2 | Ewe | EC | 123
S3 | Haye | EC | 45
S4 | Mark | EC | 145
S5 | Tom | CS | 152
S6 | Hudd | CS | 218
S7 | Ken | CS | 48
S8 | Ben | CS | 15
S9 | Wode | CS | 123
S10 | Kayle | IT | 125
S11 | Den | IT | 120
S12 | Noy | IT | 126
我选择在每个分支中显示第三高分,输出应该是这样的
S1 | Amir | EC | 121
S9 | Wode | CS | 123
S11 | Den | IT | 120
最佳答案
如果 MySQL 具有像其他几个答案所示的窗口功能,这会容易得多。但他们没有,所以你可以使用类似下面的东西:
select student_id,
student_name,
branch,
mark
from
(
select student_id,
student_name,
branch,
mark,
@num := if(@branch = `branch`, @num + 1, 1) as group_row_number,
@branch := `branch` as dummy,
overall_row_num
from
(
select student_id,
student_name,
branch,
mark,
@rn:=@rn+1 overall_row_num
from student, (SELECT @rn:=0) r
order by convert(replace(student_id, 'S', ''), signed)
) src
order by branch, mark desc
) grp
where group_row_number = 3
order by overall_row_num
结果是:
| STUDENT_ID | STUDENT_NAME | BRANCH | MARK |
---------------------------------------------
| S1 | Amir | EC | 121 |
| S9 | Wode | CS | 123 |
| S11 | Den | IT | 120 |
关于mysql - 如何在所有分支中获得第 n 个最高分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13872841/
我是 php 的初学者,所以对于这么简单的问题我感到很抱歉。我需要制作高分列表 - 从最高分到最低分排序。分数和昵称一起存在数据库中。 我知道我应该使用 asort,但我尝试了很多不同的方法,但我不起
我使用此代码从排行榜中获得最高分,但我不断获得 java.lang.IllegalStateException 在 LeaderboardScore lbs = arg0.getScores().ge
我有一个高分(最高分)系统,它根据玩家的经验来计算位置。但现在我需要在网络上的其他地方使用玩家的排名,也许网络上的更多地方也像个人一样得分高,就会显示玩家该技能的排名。 因此,仅仅循环并使用像rank
我是一名优秀的程序员,十分优秀!