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

PostgreSQL:按账户分组筛选金额差值小于5的唯一ID

PostgreSQL分组筛选:获取组内金额差值小于5的唯一ID

先把你的数据整理成更直观的表格:

idaccountamount
123abc10
1234abc12
4568abc16
456def20
458def30

根据你的需求——按account分组,筛选出组内存在至少一个其他记录与自身金额差值小于5的唯一id,这里有个直接可行的SQL方案:

SELECT DISTINCT t1.id
FROM your_table t1
INNER JOIN your_table t2
  ON t1.account = t2.account
  AND t1.id != t2.id
WHERE ABS(t1.amount - t2.amount) < 5;

思路拆解

  • 自连接匹配同组记录:通过将表与自身连接,把每个记录和同account下的其他记录做对比,t1.id != t2.id是为了避免记录和自身无效比较。
  • 筛选差值条件:用ABS()计算金额差的绝对值,确保不管金额谁大谁小,只要差值小于5就符合要求。
  • 去重得到唯一ID:符合条件的记录可能会被多次匹配(比如123会和1234匹配,1234也会和123匹配),所以用DISTINCT保证每个id只输出一次。

运行这个查询后,你会得到预期的结果:123、1234、4568。而def组的两个记录金额差为10,不满足条件,所以不会被包含进来。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 04:01:46