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

PostgreSQL查询近x天按日去重的重复交易数据实现方案

问题处理方案

你之前的SQL统计的是符合条件的交易总笔数,同一天的多笔交易会被重复计数,所以和预期不符。要实现单日多笔仅计1次的需求,只需要对交易日期做去重计数即可。

核心实现逻辑

  • 把created_at的时分秒截断,仅保留日期维度
  • 对处理后的日期做去重计数,得到有效交易天数
  • 只需判断有效天数是否等于要校验的x天,即可得到是否符合规则的布尔结果

PostgreSQL 实现语句(适配你原有语法)

1. 查询有效交易天数

SELECT COUNT(DISTINCT DATE(created_at)) AS valid_days
FROM transactions
WHERE 
  user_id = 1 -- 替换为目标用户ID
  AND currency = 'USD' -- 替换为目标币种
  AND amount = 200 -- 替换为目标校验金额
  AND created_at >= NOW() - INTERVAL '5 DAY'; -- 把5替换为你需要校验的天数x

2. 直接返回是否符合规则的布尔值

SELECT COUNT(DISTINCT DATE(created_at)) = 5 AS is_qualified
FROM transactions
WHERE 
  user_id = 1
  AND currency = 'USD'
  AND amount = 200
  AND created_at >= NOW() - INTERVAL '5 DAY';

样例数据返回结果

  • 查询用户ID为1、金额为200、时间范围5天:valid_days返回4,is_qualified返回false
  • 查询用户ID为2、金额为250、时间范围5天:valid_days返回5,is_qualified返回true,完全符合需求。

其他数据库适配

如果使用MySQL,仅需调整时间条件的写法即可:

SELECT COUNT(DISTINCT DATE(created_at)) AS valid_days
FROM transactions
WHERE 
  user_id = 1
  AND currency = 'USD'
  AND amount = 200
  AND created_at >= DATE_SUB(NOW(), INTERVAL 5 DAY);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.19 12:36:04