我有下面的样本数据Sample Data我想得到每个学生的最新分数。注意,名为考试的列标记该作业是否是考试。
我想获取每个人的最新记录,其中Exam = Yes
我尝试了以下方法
WITH ranked_messages AS (
select Student_number,Exam,Mark,Date_of_exam,
ROW_NUMBER() OVER (PARTITION BY Student_number ORDER BY Date_of_exam DESC) as rnt
FROM new_table
)
SELECT * FROM ranked_messages WHERE rnt = 1 and Exam = 'Yes'
我得到了click here
我希望得到以下click here
4条答案
按热度按时间pieyvz9o1#
在样本集中,D201的最新记录没有Exam = 'Yes',因此它不会从内部查询中获得rnt = 1。因此,您可能只需要将Exam限定符移动到内部查询中。如下所示:
xkftehaa2#
演示:
http://sqlfiddle.com/#!9/b63280/3
下面是示例数据和模式。
然后您可以这样查询:
mnemlml83#
尝试类似的东西,使用Joins:
disbfnqx4#
请尝试这个&让我知道仍然如果您有任何疑问