发布网友 发布时间:2022-04-22 10:26
共3个回答
热心网友 时间:2022-05-01 14:42
工具/材料:Management Studio。
1、首先在桌面上,点击“Management Studio”图标。
2、之后在该界面中,点击左上角“新建查询”选项。
3、接着在该界面中,输入查询学生平均成绩及其名次的sql语句“select name,AVG(grade),no from test2 group by name,no”。
4、然后在该界面中,点击左上方“执行”按钮。
5、最后在该界面中,显示学生平均成绩及其名次成功。
热心网友 时间:2022-05-01 16:00
mysql表如何根据分数获得排名 set @count=0;select @count=@count+1 as `名次` from table_name order by `分数` desc;
热心网友 时间:2022-05-01 17:35
select sid,ROUND(AVG(score),2) as avg_s from SC GROUP BY sid)a:根据sid算出score列的平均数,保留两位小数,结果起名a;
(select @avg_score:=0,@i:=0,@k:=0)b:定义@avg_score,@i,@k三个标量,初始值=0,起名b,@avg_score是保存avg_s的值,@i,@k是排序的序列值(第一名,第二名这类)
@i:=@i+1 as '不保留空缺排名':执行时@i的值在上一次基础上加1,初始值0,第一行@i=1,第二行@i=2,以此类推,这一列的名字起名'不保留空缺排名',也就是'按照成绩排序,成绩相同的排在后面一位’
@k:=(case when @avg_score=a.avg_s then @k else @i end) as '保留空缺排名':判断@avg_score和a.avg_s相不相等,@avg_score初始值0,第一行是0,第二行的值是第一行avg_s的值,也就是说判断下一个sid的成绩和上一个相不相等,要是相等返回@k,不相等返回@i,@k的值初始值是0,要是 @avg_score和a.avg_s不相等,@k的值就是@i的值,要是 @avg_score和a.avg_s相等,@k的值就是上一行的@i,结果起名'保留空缺排名',也就是‘成绩相同排名并列’
总结来说就是根据平均分产生不并列排名的成绩和并列排名的成绩,我说的很详细了,应该没问题了