sql - 获取查询中给出的每个 id 的最大值(Postgres)
问题描述
我有这样的查询
select distinct on (foreign_id) foreign_id, id, date
from table
where foreign_id IN (1, 2, 3)
我得到的结果是
外国身份证 | ID | 日期 |
---|---|---|
1 | 101 | 2019-03-20 |
2 | 102 | 2020-02-06 |
3 | 103 | 2020-06-09 |
这很好,因为我只想获得每个foreign_id 的单行,但我想获得结果中包含最大日期和最大id 值的行。
现在对于 ID 号 1,我得到的日期是 2019-03-20,这不是表中最大的日期
我曾尝试使用 max() 函数,但它仅从给定的 foreign_id 返回一行
有任何想法吗?
解决方案
您可以使用如下分析函数:
select select foreign_id, id, date from
(select foreign_id, id, date,
row_number() over (partition by foreign_id order by date desc) as rn
from table
where foreign_id IN (1, 2, 3) ) t
where rn = 1
推荐阅读
- php - composer global 需要 laravel/installer
- javascript - 通过参考(Reactjs)访问事件设置中的状态?
- fullcalendar - 事件的完整日历周视图宽度不正确
- javascript - 恢复中止的 AJAX 请求
- facebook - Facebook 是否使用 OAuth 来使用他们的 API
- android - 在 Fragment 中调用 id 时如何修复应用程序崩溃?
- c# - 将属性名称传递给泛型方法
- javascript - 使用一个按钮将两个数据表转换为 PDF 文件 - javascript
- c - 任何内置函数来清空c中的字符串?
- python - 线程中的更新和 On_Draw Pyglet