Postgresql 选择最大值时如何选择最大日期值
我有一个表格,上面有学生入学考试的成绩和日期 第一个学生通过了考试——这是大多数学生最常见的记录 第二名学生第一次输入失败,根据日期第二次通过 第三名学生输入失败,并根据版本进行了更正 我需要的结果喜欢上面的图片,所以我们考虑使用最新的日期和最高版本 到目前为止,我的基本疑问是Postgresql 选择最大值时如何选择最大日期值,postgresql,Postgresql,我有一个表格,上面有学生入学考试的成绩和日期 第一个学生通过了考试——这是大多数学生最常见的记录 第二名学生第一次输入失败,根据日期第二次通过 第三名学生输入失败,并根据版本进行了更正 我需要的结果喜欢上面的图片,所以我们考虑使用最新的日期和最高版本 到目前为止,我的基本疑问是 select studentid ,examdate --(Date) ,result -- (charvar) from StudentEntryExam 我应该如何处理这个问题? DISTINCT ON
select studentid
,examdate --(Date)
,result -- (charvar)
from StudentEntryExam
我应该如何处理这个问题?
DISTINCT ON
返回有序组的第一条记录。在这种情况下,组为studentid
s。您必须先找到正确的顺序来设置所需的记录。因此,您当然需要按studentid
订购。然后您首先需要最新的examdate
,这可以通过DESC
顺序来实现。如果在同一日期有两条记录,您也需要先使用DESC
修饰符订购最高的版本。为什么某个语句在涉及更多数据集时会变得不稳定?不,这个查询很好。我想,问题出在你的系统周围。嗯,这很难,所以当你看不见它时,检查一下它有什么问题。。。
SELECT DISTINCT ON (studentid)
*
FROM mytable
ORDER BY studentid, examdate DESC, version DESC