You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL如何按client_id、Version分组获取对应最新日期记录

解决方案

通过聚合函数MAX()取分组内的最新日期即可,不需要将日期字段加入GROUP BY子句。

原有写法的问题

  • 把Date加入GROUP BY时,分组粒度会变成「client_id + Version + 单日日期」,每个日期会单独生成一个分组,最终返回所有日期的记录,无法得到单组最新值。
  • 把Date从GROUP BY中移除但不做聚合处理时,数据库无法确定要返回组内哪一条日期记录,会触发语法报错,这是SQL的标准语法约束。

正确SQL语句

从你写的NOW()::DATE语法判断你用的是PostgreSQL,以下语句自动查询近12个月数据,返回结果和你给出的示例结构完全匹配:

SELECT
  client_id,
  Version,
  MAX(Date) AS "LATEST Date"
FROM db_table
WHERE Date >= CURRENT_DATE - INTERVAL '12 months'
  AND Date < CURRENT_DATE
GROUP BY client_id, Version
ORDER BY client_id, Version;

适配说明

  • 如果使用MySQL,将WHERE中的日期条件替换为Date >= DATE_SUB(CURDATE(), INTERVAL 12 MONTH)即可,其余逻辑不变。
  • 如果需要固定查询时间范围,直接替换WHERE里的日期条件为你需要的起止值即可,聚合逻辑不需要调整。

内容的提问来源于stack exchange,提问作者Sergey

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.15 16:16:02