SQL的查询问题,请求解决

数据来源:题目所需文件 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

img

执行结果

img

img

帆软考试题,刚好做到