数据来源:题目所需文件 CARD_ID(身份证)、TNAME(姓名) 、SCORES(分数)、OPENID(设备ID) 、INSERTTIME(提交成绩时间)
题目要求 分数>=60分视为考试通过,有一次通过即为考核通过 OPENID重复的两个人视为一个人替另外一个人代考,
设定第一次在某设备上提交成绩的人员为A,后续在该设备提交的成绩均为A帮助其他人员代考,成绩应为A的成绩,查询有哪几个人员帮助他人代考,
这些人员的考核最高分是多少?结果列输出姓名、考核最高分
这道题目基本可以用row_number()开窗来做,
1、先排除掉本人自己的那一条数据
2、再对代考的再次进行 row_number() 开窗 取出最大的考核分数
假设表名为TEST 查询SQL语句如下
SELECT dbo.Test.TNAME,a. OPENID,a.SCORES,a.INSERTTIME FROM dbo.Test
JOIN (SELECT OPENID,MIN(INSERTTIME)AS INSERTTIME,MAX(SCORES) AS SCORES FROM dbo.Test GROUP BY OPENID HAVING COUNT(OPENID)>1) AS a
ON dbo.Test.OPENID=a.OPENID AND a.INSERTTIME = Test.INSERTTIME
数据表TEST
执行结果
帆软考试题,刚好做到