Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql 选择最大值时如何选择最大日期值_Postgresql - Fatal编程技术网

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