如何使用SQL组筛选具有最小日期值的行?

如何使用SQL组筛选具有最小日期值的行?,sql,group-by,limit,db2-400,Sql,Group By,Limit,Db2 400,我有下表: 学生代码 区域编码 课程代码 提交日期 46588225 N AAA00004 2017-03-16 06:08:40.031000 85788225 N AAA00004 2017-03-24 12:14:29.493000 85789271 N AAA00004 2017-06-24 12:14:29.493000 884444 N B0006 2017-10-05 00:33:08.627000 2558855 N B0006 2019-08-02 02:47:22.99600

我有下表:

学生代码 区域编码 课程代码 提交日期 46588225 N AAA00004 2017-03-16 06:08:40.031000 85788225 N AAA00004 2017-03-24 12:14:29.493000 85789271 N AAA00004 2017-06-24 12:14:29.493000 884444 N B0006 2017-10-05 00:33:08.627000 2558855 N B0006 2019-08-02 02:47:22.996000
可以使用相关子查询

select a.STUDENT_CODE,a.REGION_CODE,a.COURSE_CODE,SUBMIT_DATE
from STUDENT as a 
where a.REGION_CODE='N' and a.COURSE_CODE IN ('AAA00004','B0006')
and SUBMIT_DATE in
   (select min(SUBMIT_DATE) from STUDENT as b where a.COURSE_CODE=b.COURSE_CODE)
我建议对此使用row_编号:

select s.*
from (select s.*,
             row_number() over (partition by region_code, course_code order by submit_date desc) as seqnum
      from student s
      where s.REGION_CODE = 'N' and
            s.COURSE_CODE IN ('AAA00004', 'B0006')
     ) s
where seqnum = 1;

使用group by并仅获取前1行是什么意思?我是说,你不能。例如,您至少需要选择和从中选择。谢谢@Gordon linoff也在工作。但我有个问题。你能告诉我,哪一个对大数据/大数据进行分组更快?子查询中的手动筛选或子查询中的函数行\编号。@mae。您需要在您的环境中的数据上尝试这一点。不过,我希望这比聚合要快。