sql - 如何按一列分组,按另一列聚合并在postgresql中获取另一列?
问题描述
这似乎很简单,但在过去的几个小时里找不到这个问题的答案。
我有一个表 request_state,其中“id”是主键,它可以有多个具有相同 state_id 的条目。我想在使用最大日期时间按 state_id 分组后获取 id。
所以我尝试了这个,但它给出了错误“state_id”必须出现在 GROUP BY 子句中或用于聚合函数中
select id, state_id, max(datetime)
from request_state
group by id
但是当我使用以下查询时,我得到多个具有相同 state_id 的条目。
select id, state_id, max(datetime)
from request_state
group by id, state_id
我的桌子:
id state_id date_time cef 1 月 1 日
ter 1 1 月 2 日
ijk 1 月 3 日
uuu 2 月 1 日
rrr 2 月 2 日
这就是我想要的结果,
id state_id date_time
__ ________ _________
ijk 1 月 3 日
rrr 2 月 2 日
解决方案
试试这个查询:
select id, state_id, date_time from (
select id, state_id, date_time,
row_number() over (partition by state_id order by date_time desc) rn
from tbl
) a where rn = 1
推荐阅读
- c++11 - Asio UDP 从外部读取处理程序写入
- vba - VBA:如何将电子邮件复制到 Outlook 文件夹?
- python - DataFrame.drop 导致 numpy.sin 的 ufunc 循环错误
- javascript - 当键值为空时,从对象数组中删除嵌套对象
- python - TF 2.6:“AssignVariableOp”Op 的输入“资源”Op 的 float32 类型与预期的资源类型不匹配
- javascript - 从 javascript 参考案例中重现 python 中的 hmac 操作
- node.js - HTTP 请求 - 请求模块 - 包含 html 转义字符的 302 重定向位置
- apache-camel - 在 Spring Camel 文件组件中设置自定义 processStrategy 会抛出找不到合适的属性设置器:processStrategy
- categorical-data - brms:我如何设置具有多个分类变量的模型,以便所有级别都存在并且没有纳入一般截距?
- r - 如何对小标题和小标题中的列/值运行操作,小标题在列表中?