Mysql 在最高分数上加上具体分数
我想在最高分上加分。 我的桌子是空的 我试着给一个学生的最高3分。第一名得5分,第二名得3分,第三名得1分 我用这个代码来选择最高分Mysql 在最高分数上加上具体分数,mysql,sql,sql-order-by,Mysql,Sql,Sql Order By,我想在最高分上加分。 我的桌子是空的 我试着给一个学生的最高3分。第一名得5分,第二名得3分,第三名得1分 我用这个代码来选择最高分 select t1.ID, t1.Name, t1.Section, t1.Marks from myTable t1 join (select Section, substring_index(group_concat (distinct Marks order by Marks desc), ',', 3) as Marks3 from myTabl
select t1.ID, t1.Name, t1.Section, t1.Marks from myTable t1 join
(select Section, substring_index(group_concat
(distinct Marks order by Marks desc), ',', 3) as Marks3
from myTable group by Section ) tsum on t1.Section = tsum.Section
and find_in_set(t1.Marks, tsum.Marks3) > 0 ORDER BY Section, Marks DESC, ID Desc
我想为第一高的分数加5分,第二高的分数加3分,第三高的分数加1分。学生可能会出现重复分数
请参阅
所以我的最终输出
请帮帮我你可以这样做
选择id、名称、节、标记、,
案例等级为1后为5
2时3分
3时1
其他0
终点
从…起
选择s.*,@n:=IF@s=节,IF@m=marks,@n,@n+1,1级,@m:=marks,@s:=section
从学生s中选择@n:=0 i
按节订购,标记说明
Q
点数大于0的
输出:
| ID | NAME | SECTION | MARKS | POINTS |
----------------------------------------
| 1 | S1 | class1 | 55 | 5 |
| 7 | S7 | class1 | 32 | 3 |
| 3 | S3 | class1 | 25 | 1 |
| 10 | S10 | class2 | 78 | 5 |
| 14 | S14 | class2 | 78 | 5 |
| 6 | S6 | class2 | 66 | 3 |
| 2 | S2 | class2 | 33 | 1 |
| 13 | S13 | class2 | 33 | 1 |
| 4 | S4 | class3 | 65 | 5 |
| 11 | S11 | class3 | 65 | 5 |
| 5 | S5 | class3 | 43 | 3 |
| 12 | S12 | class3 | 43 | 3 |
| 15 | S15 | class3 | 25 | 1 |
这是演示
输出:完全符合您的需求
ID NAME SECTION MARKS POINTS
1 S1 class1 55 5
7 S7 class1 32 3
3 S3 class1 25 1
10 S10 class2 78 5
14 S14 class2 78 5
6 S6 class2 66 3
2 S2 class2 33 1
13 S13 class2 33 1
4 S4 class3 65 5
11 S11 class3 65 5
5 S5 class3 43 3
12 S12 class3 43 3
15 S15 class3 25 1
任何可用于筛选出分数为“0”的记录的筛选查询?都是围绕您的小提琴进行的。但没有得到。@PraveenPrasannan请参阅更新的答案和SqlFIDLE,以筛选出分数为0的行。@PraveenPrasannan您没有得到什么?@PraveenPrasannan谢谢:由于处理列别名的顺序,在这种情况下,WHERE子句中不提供点。因此有两种选择:1使用2将其全部包装在外部选择中,并使用WHERE+1处理一个漂亮的问题和您为此付出的努力
ID NAME SECTION MARKS POINTS
1 S1 class1 55 5
7 S7 class1 32 3
3 S3 class1 25 1
10 S10 class2 78 5
14 S14 class2 78 5
6 S6 class2 66 3
2 S2 class2 33 1
13 S13 class2 33 1
4 S4 class3 65 5
11 S11 class3 65 5
5 S5 class3 43 3
12 S12 class3 43 3
15 S15 class3 25 1