SQL:根据成绩表查询,结果如下图,如何写SQL语句?也就是根据(科目,考试日期)进行组内排名。

SQL 查询结果图.png

附件:

初一11班_成绩表.xls


根据(科目,考试日期)对同一科目,同一考试日期的所有同学进行排名。

image.png

这是成绩的折线图。我是希望看到学生在班级中每次排名升降的折线图。

zrh197218 发布于 2020-1-8 20:20 (编辑于 2020-1-8 21:25)
1min目标场景问卷 立即参与
回答问题
悬赏:4 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共3回答
最佳回答
0
zrh197218Lv2见习互助
发布于2020-1-8 22:27

在网上东拼西凑,终于完成了。


select 学生编号,[课程名称],考试日期,成绩,RANK()over(partition BY 课程名称,考试日期 order by 成绩) as 排名 from 初一11班_成绩表


最佳回答
0
孤陌Lv6资深互助
发布于2020-1-8 20:22(编辑于 2020-1-8 21:52)

课程分组 然后按照考试日期大小 进行排序?

image.png

  • zrh197218 zrh197218(提问者) 根据课程和考试日期分组,然后对同一课程同一考试时间的所有学生进行排名。
    2020-01-08 21:05 
  • 孤陌 孤陌 回复 zrh197218(提问者) 一定要SQL排好? 还是报表可以展表现 就好了
    2020-01-08 21:09 
  • zrh197218 zrh197218(提问者) 回复 孤陌 用SQL最好。报表展示结果,我是希望看每一个同学每一科成绩的一个折线图。
    2020-01-08 21:11 
  • 孤陌 孤陌 回复 zrh197218(提问者) 那不知道你的数据库是什么数据库 不好写啊
    2020-01-08 21:18 
  • zrh197218 zrh197218(提问者) 回复 孤陌 数据库在附件里。
    2020-01-08 21:25 
最佳回答
0
JulyinLv2见习互助
发布于2020-2-16 13:51

SELECT 

a.学生编号,

a.成绩,

IF(

@课程名称=a.课程名称 and @考试日期:=a.`考试日期`,@rank:=@rank+1 ,@rank:=1

)as rank,

(@课程名称:=a.课程名称) 课程名称,

(@考试日期:=a.考试日期) 考试日期

FROM 

(

select 学生编号, 课程名称, 考试日期, 成绩+0 成绩

from sheet1

) a,

(

SELECT

@rank:=0,@className:=NULL,@考试日期:=NULL

) b

ORDER BY

a.课程名称,

a.`考试日期`,

a.`成绩`DESC;


  • 2关注人数
  • 876浏览人数
  • 最后回答于:2020-2-16 13:51
    请选择关闭问题的原因
    确定 取消
    返回顶部