sql - 如何使用 SQL 组过滤具有最小日期值的行?
问题描述
我有下表:
STUDENT_CODE | REGION_CODE | 课程代码 | 提交_DATE |
---|---|---|---|
46588225 | ñ | AAA00004 | 2017-03-16 06:08:40.031000 |
85788225 | ñ | AAA00004 | 2017-03-24 12:14:29.493000 |
85789271 | ñ | AAA00004 | 2017-06-24 12:14:29.493000 |
884444 | ñ | B0006 | 2017-10-05 00:33:08.627000 |
2558855 | ñ | B0006 | 2019-08-02 02:47:22.996000 |
我想获得仅选择具有 region_code 和 course_code 的 submit_date 最小值的学生代码的结果。IE
STUDENT_CODE | REGION_CODE | 课程代码 | 提交_DATE |
---|---|---|---|
46588225 | ñ | AAA00004 | 2017-03-16 06:08:40.031000 |
884444 | ñ | B0006 | 2017-10-05 00:33:08.627000 |
如何使用 group by 和 FETCH FIRST 1 ROW 来实现这一点?我做了如下,但它不工作。
select a.STUDENT_CODE,a.REGION_CODE,a.COURSE_CODE,min(a.SUBMIT_DATE) from STUDENT as a where a.REGION_CODE='N' and a.COURSE_CODE IN ('AAA00004','B0006') group by a.STUDENT_CODE, a.REGION_CODE, a.COURSE_CODE order by a.COURSE_CODE asc FETCH FIRST 1 ROW ONLY;
解决方案
我建议使用row_number()
这个:
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;
推荐阅读
- google-app-engine - NDB 模型中的游标实现不起作用
- d3.js - d3.js 中折线图的 x 轴时间和 y 轴数据与 JSON 上的(数据)不匹配/显示
- python - 在寻找到二进制文件中的特定位置后删除 4 个字节 - python
- node.js - 使用 GraphQL 和 MongoDB 的 Electron 应用程序
- sass - 使用逻辑修改的导航菜单链接。每个链接都有不同的颜色
- prism - 在 App.xaml.cs 或应用程序启动时导航 ContentRegion(Prism) 中的视图(登录)
- java - ResponseEntity Spring Boot中的类型定义错误
- ruby-on-rails-4 - Rails 4为错误消息自定义模型属性名称
- ios - 哪一个是创建反应原生应用程序的正确程序。create-react-native-app MyReactNative 还是 react-native init MyReactNative?
- python - 无法导入图像来测试 Scikit learn 应用程序