假设我们有一行是学生,包含,id,姓名,分数和等级。编写一个查询,返回按年级排序的分数等于100的学生的姓氏。例子
- id | name | marks | grade |
- 01 | Jeff | 40 | 1 |
- 02 | Annie| 40 | 3 |
- 03 | Ramy | 20 | 5 |
- 04 | Jenny| 20 | 2 |
所以结果应该会回来
安妮
因为安妮是分数总和的最后一行,分数等于100。杰夫是第一个原因,根据年级,他等于1,所以他应该进入第一,第二是珍妮,第三是安妮。杰夫(40)+珍妮(20)+安妮(40)=100
3条答案
按热度按时间yvgpqqbh1#
保留
marks
一个变量。并将其用作子查询并选择具有total
是100。但如果没有一行的累计总数为100,则不会得到任何结果。查询
rsaldnfx2#
您可以对mysql的用户变量进行运行求和。
这个查询应该可以在MySQL5.1及更高版本中使用。
查询
结果
db fiddle视图
仅限mysql 8.0+
查询
结果
db fiddle视图
0dxa2lsx3#
正如上面提到的数据库结构,下面是获取输出的方法之一
选择名称从(选择*从(选择id、名称、等级、标记,@total:=@total+标记作为总计从(螺柱,(选择@total:=0)t)按等级排序)t,其中total<=100)最终视图按等级排序描述限制1