sql - 时间戳数据类型上的 Oracle max 函数
问题描述
我想从 oracle 中的时间戳数据类型中获取最大日期
我的数据看起来像这样
id updated_date
-- -------------------
1 2011-12-21 10:34:24
1 2011-12-21 09:52:15
1 2011-12-21 10:02:49
由于所有日期都相同但时间戳不同,因此 max 函数将所有 3 行改为我想查看每个 ID 的最新时间戳的最大日期,如下所示
Select MAX(updated_date) update_date, id FROM id_table group by id;
id updated_date
-- -------------------
1 2011-12-21 10:34:24
提前致谢
该表为 10000 多行,数据如下所示
id updated_date
-- -------------------
1 2011-12-21 10:34:24
1 2011-12-21 09:52:15
1 2011-12-21 10:02:49
2 2011-13-21 10:34:24
2 2011-13-21 09:52:15
2 2011-13-21 10:02:49
3 2011-14-21 10:34:24
3 2011-14-21 09:52:15
3 2011-14-21 10:02:49
在选择时,我希望看到每个 id 有 1 行,没有重复 Select MAX(updated_date) update_date, id FROM id_table group by id;
id updated_date
-- -------------------
1 2011-12-21 10:34:24
2 2011-13-21 10:34:24
3 2011-14-21 10:34:24
解决方案
您可以使用FIRST
聚合函数或row_number()
.
1.
SELECT MAX(id) KEEP(DENSE_RANK FIRST ORDER BY updated_date DESC) AS id,
MAX(updated_date) update_date
FROM id_table;
2.
SELECT id,
updated_date
FROM (
SELECT i.*,
ROW_NUMBER() OVER(
ORDER BY updated_date DESC
) AS rn
FROM id_table i
)
WHERE rn = 1;
奖励(适用于 Oracle 12c 及更高版本):
select * from id_table
ORDER BY updated_date DESC FETCH FIRST 1 ROWS ONLY
推荐阅读
- laravel - 如何使用 Gate::authorize 检查控制器中的门?
- jupyter-notebook - 自动完成在 Jupyter 实验室中不起作用
- flutter - 持续时间动画动态与颤动
- angular - 默认值选择选项角度
- azure - 关闭 Azure 数据流选项卡后自动取消选择链接服务
- java - SAP CF XSUAA 服务 - 错误消息:无效重定向
/login/callback 与注册值不匹配 - python-3.x - 如何将 url 从 Jinja2 模板传递到 Flask 应用程序路由/函数,如果参数包含空格
- javascript - JavaScript 中的对象属性
- firebase - 我应该如何使用 firebase / google analytics 跟踪移动应用登陆页面
- sql - SQL:将变量设置为存储过程中的单元格值