sql - Oracle SQL:接收具有最小日期的分组外键的 ID
问题描述
我有一张桌子。
我需要具有最小修改日期的每个投标的 ID
ID | 出价 | 修改的 |
---|---|---|
1 | 1 | 01.01.2020 |
2 | 1 | 01.07.2020 |
3 | 2 | 04.08.2020 |
4 | 2 | 04.06.2020 |
5 | 2 | 01.07.2020 |
6 | 2 | 01.10.2020 |
7 | 3 | 01.09.2020 |
期望的输出:
ID | 出价 | 修改的 |
---|---|---|
1 | 1 | 01.01.2020 |
4 | 2 | 04.06.2020 |
7 | 3 | 01.09.2020 |
到目前为止,我可以获得具有最小修改日期的投标列表,但不是其中的 ID:
select BID, min(MODIFIED) from MY_TABLE group by BID
但是,我怎样才能收到 ID?
解决方案
Oracle 有一个“第一个”聚合函数,它使用以下keep
语法:
select BID, min(MODIFIED),
min(id) keep (dense_rank first over order by modified) as id
from MY_TABLE
group by BID;
一个常见的替代方法是使用窗口函数:
select t.*
from (select t.*,
row_number() over (partition by bid order by modified asc) as seqnum
from my_table t
) t
where seqnum = 1;
推荐阅读
- javascript - scrollTop addclass 跳转
- sql - SQL 平均时间差 hh:mm:ss 按类型
- c# - 禁用组合框时如何更改背景颜色。禁用时看起来很奇怪?
- php - 如何按特定值对数组进行分组?
- javascript - 如何在Angular的组件html中迭代具有未知深度和未知键/值的未知对象
- javascript - 在 div 上画线
- javascript - Joi - 验证 mysql 日期时间格式的字符串
- react-datepicker - Javascript airbnb react-dates showClearDate 抛出
- javascript - 为什么我复制一个表和头部信息丢失
- ios - 如果我不打算发布它,我可以创建一个不遵循苹果限制的应用程序吗?