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

PostgreSQL按指定usergroupid分组取单条数据报错求助

问题解决与正确SQL语句

原查询的问题

  1. 排序字段entrytime未包含在GROUP BY子句中,也未使用聚合函数处理,违反PostgreSQL的分组规则,导致报错。
  2. 使用LIMIT 1仅能返回一条数据,无法满足usergroupid=237935、761793各返回一条的需求。

正确查询语句

SELECT to_char_entrytime, usergroupid
FROM (
    SELECT 
        TO_CHAR(entrytime, 'YYYY-MM-DD HH12:MI:SS') AS to_char_entrytime,
        usergroupid,
        ROW_NUMBER() OVER (PARTITION BY usergroupid ORDER BY entrytime DESC) AS rn
    FROM "public"."history"
    WHERE deviceid = 17355763 AND usergroupid IN (237935, 761793)
) t
WHERE rn = 1
ORDER BY usergroupid;

逻辑说明

  • 子查询通过ROW_NUMBER() OVER (PARTITION BY usergroupid ORDER BY entrytime DESC),按usergroupid分区,每个分区内按entrytime倒序给记录编号,最新的记录编号为1。
  • 外层查询筛选出编号为1的记录,即可得到每个目标usergroupid对应的最新一条数据,同时规避原查询的分组错误问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 07:05:32