一个复杂的SQL查询 (想了半天实在想出来了,本人目前已经非常的疼苦 求解惑,付费有偿,逻辑正确,必采纳。)
表数据为:
题目所需字段
CARD_ID(身份证)、TNAME(姓名) 、SCORES(分数)、OPENID(设备ID) 、INSERTTIME(提交成绩时间)
题目要求:
分数>=60分视为考试通过,有一次通过即为考核通过 OPENID重复的两个人视为一个人替另外一个人代考,设定第一次在某设备上提交成绩的人员为A,后续在该设备提交的成绩均为A帮助其他人员代考,成绩应为A的成绩,查询有哪几个人员帮助他人代考,这些人员的考核最高分是多少?结果列输出姓名、考核最高分。
我是这样写的
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
但是里面的数据还有空(陈十二),我不知道这么排除空,还有姓名是重复的(张三),所以这条SQL就不对了。
请各位老哥解惑,这SQL要怎么写啊。 SQL逻辑正确了,付费有偿!